溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

PHP中如何使用MQ消息隊(duì)列

發(fā)布時(shí)間:2021-06-29 17:04:59 來源:億速云 閱讀:274 作者:Leah 欄目:大數(shù)據(jù)

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)PHP中如何使用MQ消息隊(duì)列,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

1.安裝php-amqplib 服務(wù)
在composer.json配置

{"require": {"php-amqplib/php-amqplib": ">=2.6.1"}}

2.執(zhí)行composer.phar install 來安裝

3.引入mq文件

define('EXTEND_PATH', '../vendor/autoload.php');use app\synchronous\model\RabbitMqModel;use PhpAmqpLib\Connection\AMQPStreamConnection;

4.發(fā)送到隊(duì)列數(shù)據(jù)代碼

/*** MQ生產(chǎn)數(shù)據(jù)* @param $queueName 隊(duì)列名稱* @param $msg 發(fā)送數(shù)據(jù)* @name MqPushLish* @author * @return*/public function MqPublish($queueName , $msg = []){try{if(empty($queueName))return false;//獲取mq配置$mqConfig = $this->getConfig();//創(chuàng)建連接和channel$connection = new AMQPStreamConnection($mqConfig['host'] , $mqConfig['port'] , $mqConfig['user'] , $mqConfig['password']);$channel = $connection->channel();$name = $queueName;$type = "direct";$passive = false;$durable = true;$auto_delete = true;$channel->exchange_declare($name, $type, $passive, $durable, $auto_delete);$message = new AMQPMessage('[{"data_id":184981,"complex_id":7821,"area":"bj","dj":0,"mj":84,"shi":"2室","ting":"2廳","wei":"1衛(wèi)","chu":"1廚","cate_status":"4","thumb":"http://img.zgsta.com/1-2-1-1-9057/11cf99e0a95cfc2a10a06af7e5a5f367_addfinger.png","tujis":["http://img.zgsta.com/1-2-1-1-9057/11cf99e0a95cfc2a10a06af7e5a5f367_addfinger.png"],"create_time":1512937831,"update_time":1533907683,"house_toward":"南北","reference_totalprice":0,"reference_down_payment":""},{"data_id":184981,"complex_id":9057,"area":"sh","dj":0,"mj":84,"shi":"2室","ting":"2廳","wei":"1衛(wèi)","chu":"1廚","cate_status":"4","thumb":"http://img.zgsta.com/1-2-1-1-9057/11cf99e0a95cfc2a10a06af7e5a5f367_addfinger.png","tujis":["http://img.zgsta.com/1-2-1-1-9057/11cf99e0a95cfc2a10a06af7e5a5f367_addfinger.png"],"create_time":1512937831,"update_time":1533907683,"house_toward":"南北","reference_totalprice":0,"reference_down_payment":""}]');$channel->basic_publish($message,'', $queueName);//發(fā)送數(shù)據(jù)到MQ$channel->close();$connection->close();//打印日志DeShangLog::log(0, $msg ,$queueName.'MQ發(fā)送隊(duì)列數(shù)據(jù)正常');return true;}catch (\Exception $e){//打印日志DeShangLog::log(1, $e->getMessage() ,'MQ發(fā)送隊(duì)列數(shù)據(jù)異常?。。。。。。。。。。。。。。?!');return false;}}

5.消費(fèi)隊(duì)列數(shù)據(jù)代碼

/*** MQ消費(fèi)數(shù)據(jù) 監(jiān)視數(shù)據(jù)* @param $queueName 隊(duì)列名稱* @name MqConsumer* @author Admin* @return*/public function mqConsumer(){try{$queueName = $this->getx('queue' , 'complex_info_test');if(empty($queueName)){echo "not queue ";die;}//創(chuàng)建連接和channel$connection = new AMQPStreamConnection(C('config_mq.host') , C('config_mq.port') , C('config_mq.user') , C('config_mq.password'));$channel = $connection->channel();$channel->queue_declare($queueName, false, true, false, false);echo ' [*] Waiting for messages. To exit press CTRL+C', "\n";$callback = function($msg) {//打印日志,記錄消費(fèi)的數(shù)據(jù)DeShangLog::log(0, $msg->body ,'MQ接收戶型同步數(shù)據(jù)');$returnData = json_decode($msg->body , true);//調(diào)用插入戶型數(shù)據(jù)$this->addDoorList($returnData);echo " [x] Received ", $msg->body, "\n";};$channel->basic_consume($queueName, '', false, false, false, false, $callback);//消費(fèi)出數(shù)據(jù)while(count($channel->callbacks)) {$channel->wait();}$channel->close();$connection->close();}catch (\Exception $e){//打印日志DeShangLog::log(1, $e->getMessage() ,'MQ發(fā)送隊(duì)列數(shù)據(jù)異常?。。。。。。。。。。。。。。?!');return false;}}
6.在linux 配置守護(hù)進(jìn)程
 命令:``` nohup php index.php /synchronous/synchronous/mqconsumer & ``` “&” 代表不間斷運(yùn)行    在/etc/rc.local文件中,將 ``` nohup php index.php /synchronous/synchronous/mqconsumer ```這個(gè)命令加入即可。ps:注意路徑

上述就是小編為大家分享的PHP中如何使用MQ消息隊(duì)列了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI