日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

TP5使用RabbitMQ實現消息隊列的項目實踐

瀏覽:317日期:2022-06-13 18:06:39
目錄1、安裝擴展2、自定義命令3、rabbitmq服務端4、發送端5、驗證

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

1、安裝擴展

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

composer require php-amqplib/php-amqplib2、自定義命令

TP5 的自定義命令,這里也簡單說下。

第一步:

創建命令類文件,新建 application/api/command/Test.php。

<?phpnamespace app\api\command;use think\console\Command;use think\console\Input;use think\console\Output;/**?* 自定義命令測試?*/class Test extends Command{?? ?/**?? ? * 配置?? ? */?? ?protected function configure()? ? {? ? ?? ?// 設置命令的名稱和描述? ? ? ? $this->setName('test')->setDescription('這是一個測試命令');? ? }? ? /**? ? ?* 執行? ? ?*/? ? protected function execute(Input $input, Output $output)? ? {? ? ? ? $output->writeln('測試命令');? ? }}

這個文件定義了一個叫test的命令,備注為 這是一個測試命令,執行命令會輸出:test command。

第二步:

配置 command.php文件,在 application/command.php文件中添加命令。

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

第三步:

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

php think test

回車運行之后輸出:

test command

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

3、rabbitmq服務端

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

<?phpnamespace 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('消費隊列結束');? ? }? ? /**? ? ?* 關閉? ? ?*/? ? function shutdown($channel, $connection)? ? {? ? ? ? $channel->close();? ? ? ? $connection->close();? ? }? ? /**? ? ?* 回調處理信息? ? ?*/? ? function process_message($message)? ? {? ? ? ? if ($message->body !== 'quit') {? ? ? ? ? ? echo $message->body;? ? ? ? }? ? ? ? //手動應答? ? ? ? $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、發送端

最后,我們再寫發送消息的控制器,實現消息隊列,具體代碼如下:

<?phpnamespace app\api\controller;use PhpAmqpLib\Connection\AMQPStreamConnection;use PhpAmqpLib\Message\AMQPMessage;use think\Controller;/**?* 發送端?*/class MessageQueue extends Controller{?? ?const exchange = 'xcuser';? ? const queue = 'xcmsg';? ? /**? ? ?* 發送消息? ? ?*/? ? 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';? ? }? ? /**? ? ?* 執行? ? ?*/? ? public function index()? ? {? ? ? ? $data = json_encode(['msg' => '測試數據', 'id' => '15']);? ? ? ? $this->pushMessage($data);? ? }}5、驗證

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

php think ramq

然后在瀏覽器訪問發送信息的方法,http://你的域名/api/message/index,你發送一次消息,在命令行就會輸出一條消息。這樣我們就用 RabbitMQ 實現了一個簡單的消息隊列。

到此這篇關于TP5使用RabbitMQ實現消息隊列的項目實踐的文章就介紹到這了,更多相關TP5 RabbitMQ消息隊列內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: PHP
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
97久久亚洲| 欧美日韩亚洲国产精品| 日韩黄色免费网站| 日本视频一区二区| 日本中文字幕一区二区视频| 香蕉成人久久| 亚洲涩涩av| 亚洲毛片在线| 日本精品在线播放| 国产欧美三级| 精品视频国内| 国产精品一区二区中文字幕| 国产乱人伦精品一区| 你懂的国产精品| 精品一级视频| 日韩欧美少妇| 欧美另类专区| 日本精品久久| 成人在线超碰| 欧美精品黄色| 国产精品一线| 99精品视频在线| 亚洲专区视频| 精品网站999| 亚洲一级网站| 日韩成人午夜精品| 久久不见久久见中文字幕免费| 成人国产精品| 在线视频日韩| 国产精品白丝一区二区三区| 日韩大片在线观看| 影音先锋久久精品| caoporn视频在线| 亚洲一区二区动漫| 国产一卡不卡| 国内精品福利| 国产午夜久久av| 99久久亚洲精品蜜臀| 亚洲三级在线| 国产精品伦理久久久久久| 亚洲欧美日韩国产综合精品二区 | 亚洲婷婷在线| 91成人小视频| 亚洲手机在线| 99视频精品全国免费| 国产精品.xx视频.xxtv| 一本一本久久| 激情黄产视频在线免费观看| 一级欧美视频| 三级小说欧洲区亚洲区| 国产精品一区二区三区av麻| 欧美日韩免费观看一区=区三区| 日本亚洲视频在线| 久久国产亚洲精品| 久久免费视频66| 日本午夜精品一区二区三区电影 | 亚洲不卡视频| 久久激情婷婷| 麻豆mv在线观看| 精品一区av| 美女精品视频在线| 日韩国产欧美在线视频| 精品一区欧美| 日韩欧美少妇| 亚洲精品三级| 精品日韩视频| 日本а中文在线天堂| 久久精品午夜| 免费在线亚洲欧美| 国产精品va视频| 国产日产精品_国产精品毛片| 日韩一区二区三区高清在线观看| 日韩专区一卡二卡| 久久夜色精品| 日韩欧美美女在线观看| 亚洲精品日本| 亚洲tv在线| 国产精品美女| 老鸭窝亚洲一区二区三区| 亚洲欧美一区在线| 最新日韩欧美| 亚洲精品在线国产| 欧美一区=区三区| 免费一级欧美片在线观看网站| 国产精品22p| 国产一区二区三区亚洲| 色婷婷久久久| 亚洲影院天堂中文av色| 日韩黄色av| 精品国产欧美| 蜜臀av免费一区二区三区| 久久高清一区| 免费亚洲婷婷| 欧美精品一二| 亚洲精品影院在线观看| 国产精品视频一区二区三区四蜜臂 | 麻豆91精品视频| 神马午夜在线视频| 亚洲一区激情| 国精品产品一区| 综合日韩在线| 久久久久97| 丝瓜av网站精品一区二区| 老色鬼精品视频在线观看播放| 欧美日韩黑人| 国产精品久久久久久妇女 | 奇米色欧美一区二区三区| 国产精品精品| 欧美自拍一区| 亚洲欧美成人综合| 蜜桃成人精品| 国产精品一线| 日韩在线播放一区二区| 日韩成人免费| 91成人精品观看| 久久精品影视| 麻豆精品视频在线观看免费| 亚洲免费黄色| 99成人在线视频| 国产福利91精品一区二区| 日韩高清国产一区在线| 欧美日韩视频| 999国产精品视频| 精品久久不卡| 国产日产精品_国产精品毛片 | 麻豆精品蜜桃| 久久精品二区亚洲w码 | 免费在线播放第一区高清av| 日韩一二三区在线观看| 国产毛片一区| 国产亚洲福利| 黄色免费成人| 好看不卡的中文字幕| 香蕉久久99| 激情综合自拍| 欧美福利在线| 在线精品小视频| 日韩av一级| 日韩精品首页| 五月天久久777| 99re国产精品| 亚久久调教视频| 国产精品magnet| 欧美国产三级| 麻豆精品视频在线| 久久电影tv| 视频一区欧美精品| 中文字幕成人| 国产精品久久久亚洲一区| 国产成人免费| 欧美日韩第一| 日韩av网站在线观看| 国产伦精品一区二区三区千人斩| 婷婷综合电影| 美女在线视频一区| 日韩久久一区二区三区| 伊人影院久久| 欧美专区一区| 日韩伦理福利| 性一交一乱一区二区洋洋av| 91精品国产自产观看在线| 成人在线超碰| 亚洲三级精品| 福利在线免费视频| 综合欧美精品| 日韩欧美少妇| 日韩一区二区三免费高清在线观看 | 日韩av网站在线观看| 国产精品成人a在线观看| 欧美 日韩 国产一区二区在线视频| 88久久精品| 99视频一区| 国产成人精品一区二区免费看京| 亚洲精品极品少妇16p| 国产精品毛片久久久| 国产农村妇女精品一区二区| 久久亚洲人体| 亚洲日产国产精品| 在线一区av| 日本欧美一区二区在线观看| 成人污污视频| 日本色综合中文字幕| 婷婷丁香综合| 成人台湾亚洲精品一区二区| 亚洲色图国产| 精品一区三区| 美女网站视频一区| 成人在线视频区| 欧美韩日一区| 亚洲国产福利| 不卡一二三区| 欧美精品日日操| 久久久9色精品国产一区二区三区| 精品精品久久| 日韩伦理一区| 97国产成人高清在线观看| 精品国产美女a久久9999| 成人综合一区| 日韩一区自拍| 9色国产精品|