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

您的位置:首頁技術(shù)文章
文章詳情頁

TP5使用RabbitMQ實(shí)現(xiàn)消息隊(duì)列的項(xiàng)目實(shí)踐

瀏覽:319日期:2022-06-13 18:06:39
目錄1、安裝擴(kuò)展2、自定義命令3、rabbitmq服務(wù)端4、發(fā)送端5、驗(yàn)證

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

1、安裝擴(kuò)展

進(jìn)入TP5 更目錄下,輸入命令安裝:

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

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

第一步:

創(chuàng)建命令類文件,新建 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()? ? {? ? ?? ?// 設(shè)置命令的名稱和描述? ? ? ? $this->setName('test')->setDescription('這是一個(gè)測試命令');? ? }? ? /**? ? ?* 執(zhí)行? ? ?*/? ? protected function execute(Input $input, Output $output)? ? {? ? ? ? $output->writeln('測試命令');? ? }}

這個(gè)文件定義了一個(gè)叫test的命令,備注為 這是一個(gè)測試命令,執(zhí)行命令會(huì)輸出:test command。

第二步:

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

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

第三步:

測試命令,在項(xiàng)目根目錄下輸入命令:

php think test

回車運(yùn)行之后輸出:

test command

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

3、rabbitmq服務(wù)端

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

<?phpnamespace app\api\command;use PhpAmqpLib\Connection\AMQPStreamConnection;use think\console\Command;use think\console\Input;use think\console\Output;/**?* RabbitMq 啟動(dòng)命令?*/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('消息隊(duì)列開始');? ? ? ? $this->start();? ? ? ? // 指令輸出? ? ? ? $output->writeln('消費(fèi)隊(duì)列結(jié)束');? ? }? ? /**? ? ?* 關(guān)閉? ? ?*/? ? function shutdown($channel, $connection)? ? {? ? ? ? $channel->close();? ? ? ? $connection->close();? ? }? ? /**? ? ?* 回調(diào)處理信息? ? ?*/? ? function process_message($message)? ? {? ? ? ? if ($message->body !== 'quit') {? ? ? ? ? ? echo $message->body;? ? ? ? }? ? ? ? //手動(dòng)應(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']);? ? ? ? }? ? }? ? /**? ? ?* 啟動(dòng) 守護(hù)進(jìn)程運(yùn)行? ? ?*/? ? 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ā)送消息的控制器,實(shí)現(xiàn)消息隊(duì)列,具體代碼如下:

<?phpnamespace 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、驗(yàn)證

先執(zhí)行自定義命令,啟動(dòng) rabbitmq 守護(hù)進(jìn)程。在項(xiàng)目更目錄下打開命令行,輸入下面命令:

php think ramq

然后在瀏覽器訪問發(fā)送信息的方法,http://你的域名/api/message/index,你發(fā)送一次消息,在命令行就會(huì)輸出一條消息。這樣我們就用 RabbitMQ 實(shí)現(xiàn)了一個(gè)簡單的消息隊(duì)列。

到此這篇關(guān)于TP5使用RabbitMQ實(shí)現(xiàn)消息隊(duì)列的項(xiàng)目實(shí)踐的文章就介紹到這了,更多相關(guān)TP5 RabbitMQ消息隊(duì)列內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: PHP
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲五月综合| 欧美成人久久| 久久国产99| 日韩一区二区免费看| 香蕉人人精品| 久久精品在线| 欧美日韩精品在线一区| 欧美天堂视频| 99国产精品免费视频观看| 中文字幕人成乱码在线观看| www.九色在线| 欧美不卡在线| 欧美在线亚洲综合一区| 好吊视频一区二区三区四区| 午夜免费一区| 在线精品视频一区| 日本国产亚洲| 精品视频91| 欧美成人精品三级网站| 91精品国产调教在线观看| 亚洲韩日在线| 91高清一区| 亚洲精品观看| 国产h片在线观看| 老司机精品久久| 国产精品sss在线观看av| 久久天堂精品| 美国欧美日韩国产在线播放| 日韩精品欧美精品| 欧美jjzz| 久久久91麻豆精品国产一区| 国产综合婷婷| 麻豆免费精品视频| 亚洲aⅴ网站| 成人亚洲欧美| 久久精品99久久久| 激情五月综合网| 国产精品视频一区二区三区四蜜臂| 久久视频一区| 久久精品免费看| 亚洲深夜影院| 日韩国产一区二区| 免费观看日韩电影| 日本在线啊啊| 久久超碰99| 日韩三级一区| 国产精品普通话对白| 亚洲国产成人二区| 欧美国产亚洲精品| 久久国产精品免费精品3p| 国产一区视频在线观看免费| 欧美激情福利| 国产精品夜夜夜| 欧美日韩va| 欧美日一区二区三区在线观看国产免 | 日韩av专区| 国产精品香蕉| 国产精品一区二区精品视频观看| 男人的天堂久久精品| 亚洲深夜福利| 在线精品小视频| 亚洲中午字幕| 西西人体一区二区| 午夜在线视频一区二区区别| 亚洲免费婷婷| 久久亚洲风情| 日韩一区网站| 91精品福利观看| 欧美91在线| 国产精品不卡| 日韩大片在线播放| 久久黄色影院| 日韩中文字幕亚洲一区二区va在线| 欧美专区在线| 日韩久久99| 久久影视三级福利片| 亚洲日本网址| 免费在线观看视频一区| 欧美精品影院| 久久精品免费一区二区三区 | 久久91视频| 香蕉精品久久| 在线国产日韩| 久久成人高清| 激情婷婷综合| 国产精品探花在线观看| 久久影视一区| 日韩激情综合| 欧产日产国产精品视频| 综合一区在线| 欧美好骚综合网| 中文不卡在线| 日韩中文字幕高清在线观看| 亚洲黄色影院| 国产欧美日韩视频在线| 日韩啪啪电影网| 日韩高清一区二区| 亚洲成人二区| 欧美aⅴ一区二区三区视频| 国产亚洲精品v| 98精品视频| 国产欧美日韩一区二区三区四区 | 欧美一区久久| 最新日韩欧美| 精品久久亚洲| 日韩欧美久久| 欧美成人基地| 麻豆精品久久久| 日韩国产精品久久久| 国产一区二区三区自拍| 国产探花一区| 亚洲精品第一| 亚洲一区中文| 欧美亚洲激情| 日韩欧美一区二区三区免费观看| 国产精品主播| 69堂免费精品视频在线播放| 黄色亚洲精品| 在线精品视频在线观看高清| 99国产精品免费视频观看| 久久久久久色 | 日韩一区二区三区四区五区| 日韩视频一区| 欧美精品一区二区三区精品| 国产精品99一区二区三| 欧美久久久网站| 欧美日一区二区在线观看| 日韩精品一区二区三区中文 | 日韩不卡在线观看日韩不卡视频| 日韩精品一区二区三区免费观影 | 亚洲欧洲日韩| 综合精品一区| 青青草伊人久久| 久久国产精品免费精品3p | 国产福利一区二区精品秒拍| 日韩一区二区三区在线看| 亚洲欧美在线综合| 日韩在线网址| 亚洲v天堂v手机在线| 亚洲啊v在线免费视频| 青草av.久久免费一区| 国产探花一区| 麻豆视频在线观看免费网站黄| www.九色在线| 99综合视频| 亚洲91网站| 精品一区不卡| 1024精品一区二区三区| 视频一区二区中文字幕| 日本亚洲欧美天堂免费| 日韩国产精品久久久| 国产福利资源一区| 国内激情久久| 国产亚洲一卡2卡3卡4卡新区| 免费在线亚洲欧美| 国产一区日韩一区| 日本亚洲视频| 欧美日韩免费观看视频| 视频一区中文字幕| 国内揄拍国内精品久久| 免费av一区| 久久精品国产99国产| 亚洲激情五月| 国产日韩中文在线中文字幕| 人在线成免费视频| 石原莉奈一区二区三区在线观看| 欧美日韩伊人| 成人久久一区| 欧美日韩亚洲一区三区| 亚洲午夜一级| 精品国产精品久久一区免费式| 亚洲欧美不卡| 青青久久av| 久久中文字幕一区二区三区| 免费在线观看视频一区| 免费观看亚洲| 国产精品66| 少妇高潮一区二区三区99| 久久精选视频| 精品视频一区二区三区在线观看 | 精品日产乱码久久久久久仙踪林| 亚洲精品一区二区在线播放∴| 亚洲第一精品影视| 国产一区二区三区成人欧美日韩在线观看| 一本一道久久a久久精品蜜桃| 国产精品久久观看| 国产伦精品一区二区三区在线播放 | 88久久精品| 久久久国产精品网站| 视频二区不卡| 亚洲精品国产偷自在线观看| 久久精品国产99| 合欧美一区二区三区| 丝袜美腿亚洲色图| 91大神在线观看线路一区| 国产亚洲一区二区手机在线观看| 男女性色大片免费观看一区二区 | 九九色在线视频| 亚洲免费中文| 欧美激情aⅴ一区二区三区 |