国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

TP5簡單使用RabbitMQ實現(xiàn)消息隊列

這篇具有很好參考價值的文章主要介紹了TP5簡單使用RabbitMQ實現(xiàn)消息隊列。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

在使用 RabbitMQ 之前,你要安裝好 RabbitMQ 服務(wù),具體安裝方法可以參考 windows下安裝RabbitMQ

1、安裝擴展

進入TP5 更目錄下,輸入命令安裝:

composer require php-amqplib/php-amqplib

2、自定義命令

TP5 的自定義命令,這里也簡單說下。
第一步:
創(chuàng)建命令類文件,新建 application/api/command/Test.php。

<?php

namespace app\api\command;

use think\console\Command;
use think\console\Input;
use think\console\Output;

/**
 * 自定義命令測試
 */
class Test extends Command
{
	/**
	 * 配置
	 */
	protected function configure()
    {
    	// 設(shè)置命令的名稱和描述
        $this->setName('test')->setDescription('這是一個測試命令');
    }

    /**
     * 執(zhí)行
     */
    protected function execute(Input $input, Output $output)
    {
        $output->writeln("測試命令");
    }
}

這個文件定義了一個叫test的命令,備注為 這是一個測試命令,執(zhí)行命令會輸出:test command。
第二步:
配置 command.php文件,在 application/command.php文件中添加命令。

<?php
return [
	'app\api\command\Test',
];

第三步:
測試命令,在項目根目錄下輸入命令:

php think test

回車運行之后輸出:

test command

到這里,自定義命令就結(jié)束了,test命令就自定義成功了。

3、rabbitmq服務(wù)端

下來我們自定義 RabbitMQ 啟動命令,守護進程運行,啟動 rabbirmq 服務(wù)端接收消息。
在 application/api/command 目錄下,新建 Ramq.php 文件,在執(zhí)行命令的方法中,調(diào)用 RabbitMQ 啟動守護進程方法即可。

<?php

namespace app\api\command;

use PhpAmqpLib\Connection\AMQPStreamConnection;
use think\console\Command;
use think\console\Input;
use think\console\Output;
/**
 * RabbitMq 啟動命令
 */
class Ramq extends Command
{
	protected $consumerTag = 'customer';
    protected $exchange = 'xcuser';
    protected $queue = 'xcmsg';

	protected function configure()
    {
        $this->setName('ramq')->setDescription('rabbitmq');
    }

    protected function execute(Input $input, Output $output)
    {
        $output->writeln("消息隊列開始");
        $this->start();
        // 指令輸出
        $output->writeln('消費隊列結(jié)束');
    }


    /**
     * 關(guān)閉
     */
    function shutdown($channel, $connection)
    {
        $channel->close();
        $connection->close();
    }

    /**
     * 回調(diào)處理信息
     */
    function process_message($message)
    {
        if ($message->body !== 'quit') {
            echo $message->body;
        }
        //手動應(yīng)答
        $message->delivery_info['channel']->basic_ack($message->delivery_info['delivery_tag']);
        if ($message->body === 'quit') {
            $message->delivery_info['channel']->basic_cancel($message->delivery_info['consumer_tag']);
        }
    }

    /**
     * 啟動 守護進程運行
     */
    public function start()
    {
        $host = '127.0.0.1';
        $port = 5672;
        $user = 'guest';
        $pwd = 'guest';
        $vhost = '/';
        $connection = new AMQPStreamConnection($host, $port, $user, $pwd, $vhost);
        $channel = $connection->channel();
        $channel->queue_declare($this->queue, false, true, false, false);
        $channel->exchange_declare($this->exchange, 'direct', false, true, false);
        $channel->queue_bind($this->queue, $this->exchange);
        $channel->basic_consume($this->queue, $this->consumerTag, false, false, false, false, array($this, 'process_message'));

        register_shutdown_function(array($this, 'shutdown'), $channel, $connection);
        while (count($channel->callbacks)) {
            $channel->wait();
        }
    }
}

在application/command.php文件中,添加rabbitmq自定義命令。

return [
	'app\api\command\Ramq',// rabbitmq
];

4、發(fā)送端

最后,我們再寫發(fā)送消息的控制器,實現(xiàn)消息隊列,具體代碼如下:

<?php

namespace app\api\controller;

use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;
use think\Controller;

/**
 * 發(fā)送端
 */
class MessageQueue extends Controller
{
	const exchange = 'xcuser';
    const queue = 'xcmsg';

    /**
     * 發(fā)送消息
     */
    public function pushMessage($data)
    {
        $host = '127.0.0.1';
        $port = 5672;
        $user = 'guest';
        $pwd = 'guest';
        $vhost = '/';
        $connection = new AMQPStreamConnection($host, $port, $user, $pwd, $vhost);
        $channel = $connection->channel();

        $channel->exchange_declare(self::exchange, 'direct', false, true, false);
        $channel->queue_declare(self::queue, false, true, false, false);
        $channel->queue_bind(self::queue, self::exchange);

        $messageBody = $data;
        $message = new AMQPMessage($messageBody, array('content_type' => 'text/plain', 'delivery_mode' => AMQPMessage::DELIVERY_MODE_PERSISTENT));
        $channel->basic_publish($message, self::exchange);
        $channel->close();
        $connection->close();
        echo 'ok';
    }

    /**
     * 執(zhí)行
     */
    public function index()
    {
        $data = json_encode(['msg' => '測試數(shù)據(jù)', 'id' => '15']);
        $this->pushMessage($data);
    }
}

5、驗證

先執(zhí)行自定義命令,啟動 rabbitmq 守護進程。在項目更目錄下打開命令行,輸入下面命令:

php think ramq

然后在瀏覽器訪問發(fā)送信息的方法,http://你的域名/api/message/index,你發(fā)送一次消息,在命令行就會輸出一條消息。這樣我們就用 RabbitMQ 實現(xiàn)了一個簡單的消息隊列。文章來源地址http://www.zghlxwxcb.cn/news/detail-724812.html

到了這里,關(guān)于TP5簡單使用RabbitMQ實現(xiàn)消息隊列的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • PHPstudy配置偽靜態(tài)步驟,tp5.1的框架

    PHPstudy配置偽靜態(tài)步驟,tp5.1的框架

    搜索mod_rewrite.so,然后去掉前面的#(即放開注釋) 2.找到index.php 同級文件.htaccess(沒有就新建) 這些是tp5.1自帶的內(nèi)容,把它注釋掉,是錯誤的內(nèi)容,添加下面的這段配置 3.配置文件有3處 AllowOverride none;我測試的不用改為AllowOverride all 一處都不用動,都是none也可以。 這個

    2024年02月14日
    瀏覽(23)
  • 將tp5項目、fastadmin項目部署到服務(wù)器寶塔面板

    將tp5項目、fastadmin項目部署到服務(wù)器寶塔面板

    ? ? ? ? 目錄 一、將你的fastadmin或者tp5項目文件夾上傳至你的服務(wù)器域名根目錄下 ?二、修改你的網(wǎng)站目錄指向,指向public目錄,點擊保存,并取消勾選防跨站攻擊。 ?三、配置偽靜態(tài) 四、fastadmin框架上傳至服務(wù)器后如果想要訪問后臺可以進行重定向,默認訪問前臺 五、

    2024年02月13日
    瀏覽(27)
  • 【黃啊碼】什么是ElasticSearch?它會替代MySQL成為主流嗎?如何優(yōu)化?TP5如何接入ElasticSearch?

    【黃啊碼】什么是ElasticSearch?它會替代MySQL成為主流嗎?如何優(yōu)化?TP5如何接入ElasticSearch?

    目錄 什么是ElasticSearch? ES和MySQL使用場景的比較 Elasticsearch和MySQL具體應(yīng)用場景: 如何優(yōu)化: 索引效率優(yōu)化 批量提交 優(yōu)化硬件、 減少副本數(shù)量 查詢效率優(yōu)化 路由 不帶 routing 查詢 Filter VS Query 大翻頁 JVM 設(shè)置 TP5如何接入ElasticSearch? Elasticsearch 是一個分布式、高擴展、高實時

    2024年01月16日
    瀏覽(18)
  • Java RabbitMQ消息隊列簡單使用

    Java RabbitMQ消息隊列簡單使用

    消息隊列,即MQ,Message Queue。 消息隊列是典型的:生產(chǎn)者、消費者模型。生產(chǎn)者不斷向消息隊列中生產(chǎn)消息,消費者不斷的從隊列中獲取消息。因為消息的生產(chǎn)和消費都是異步的,而且只關(guān)心消息的發(fā)送和接收,沒有業(yè)務(wù)邏輯的侵入,這樣就實現(xiàn)了生產(chǎn)者和消費者的解耦。

    2024年02月12日
    瀏覽(34)
  • tp6安裝并使用rabbitMQ

    tp6安裝并使用rabbitMQ

    最近因為業(yè)務(wù)需要,要用到MQ就去研究了一下,說實話,安裝環(huán)境給我搞自閉了,大概是我太菜 剛開始使用yum換源,各種安裝卸載始終找不到自己要用的版本,后來全部卸載,下載安裝包 編譯安裝解百憂 我用的是erlang 25.3?的版本,MQ使用的是3.11.3的版本,符合官方要求,這里的版本是有強

    2024年02月08日
    瀏覽(101)
  • RabbitMQ實現(xiàn)延遲消息,RabbitMQ使用死信隊列實現(xiàn)延遲消息,RabbitMQ延時隊列插件

    RabbitMQ實現(xiàn)延遲消息,RabbitMQ使用死信隊列實現(xiàn)延遲消息,RabbitMQ延時隊列插件

    假設(shè)有一個業(yè)務(wù)場景:超過30分鐘未付款的訂單自動關(guān)閉,這個功能應(yīng)該怎么實現(xiàn)? RabbitMQ使用死信隊列,可以實現(xiàn)消息的延遲接收。 隊列有一個消息過期屬性。就像豐巢超過24小時就收費一樣,通過設(shè)置這個屬性,超過了指定事件的消息將會被丟棄。 這個屬性交:x-message

    2024年02月13日
    瀏覽(104)
  • rabbitmq-常見七種消息隊列-控制臺界面管理-python-實現(xiàn)簡單訪問

    rabbitmq-常見七種消息隊列-控制臺界面管理-python-實現(xiàn)簡單訪問

    1.1.生產(chǎn)者和消費者 生產(chǎn)者(Producer) 消息的創(chuàng)建者。 負責(zé)創(chuàng)建和推送數(shù)據(jù)到消息服務(wù)器。 消費者(Consumer) 消息的接收方。 負責(zé)接收消息和處理數(shù)據(jù)。 1.2.消息隊列(Queue) 消息隊列是RabbitMQ的內(nèi)部對象,用于存儲生產(chǎn)者的消息直到發(fā)送給消費者,它是消費者接收消息的地方。 消息

    2024年02月03日
    瀏覽(20)
  • SSM 如何使用 RabbitMQ 實現(xiàn)消息隊列

    SSM 如何使用 RabbitMQ 實現(xiàn)消息隊列

    在分布式系統(tǒng)中,消息隊列是一種常見的通信方式,可以實現(xiàn)不同服務(wù)之間的異步通信和解耦。RabbitMQ 是一個開源的消息隊列軟件,本文將介紹如何在 SSM 框架中使用 RabbitMQ 實現(xiàn)消息隊列。 本文將使用 Spring Boot 作為 SSM 框架,使用 Maven 進行項目管理。 在開始之前,需要安裝

    2024年02月06日
    瀏覽(21)
  • tp6 RabbitMQ

    1、composer 安裝 AMQP 擴展 2、RabbitMQ 配置 ?在 config 目錄下創(chuàng)建 rabbitmq.php 文件 3、生產(chǎn)者代碼 app目錄下創(chuàng)建Producer.php 4、消費者代碼 app目錄下創(chuàng)建 Consumer.php 5、創(chuàng)建自定義命令 在項目跟目錄執(zhí)行以下命令,會自動生成 在 command 目錄生成 Consumer 控制器? config/console.php 代碼增加

    2024年02月13日
    瀏覽(104)
  • PHP最簡單自定義自己的框架實現(xiàn)像TP鏈式sql語句(六)

    PHP最簡單自定義自己的框架實現(xiàn)像TP鏈式sql語句(六)

    1、實現(xiàn)效果,鏈式sql語句封裝 order、where、group、limit等封裝 ? ?2、數(shù)據(jù)表構(gòu)造函數(shù)入?yún)?,ModelBase.php 3、ModelBase.php定義order、where、group、limit等參數(shù)以及默認值 4、封裝select、find、delete等方法動態(tài)參數(shù)ModelBase.php 5、indexCrl.php調(diào)用鏈式sql 6、完整的ModelBase.php文件

    2024年02月13日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包