Python隊(duì)列RabbitMQ 使用方法實(shí)例記錄
本文實(shí)例講述了Python隊(duì)列RabbitMQ 使用方法。分享給大家供大家參考,具體如下:
目前的exchange的路由策略是:每個(gè)需要隊(duì)列的服務(wù)獨(dú)享一個(gè)隊(duì)列(queue),消費(fèi)者(consumer)采用ACK自動(dòng)應(yīng)答模式處理隊(duì)列消息。
如果需要新增一個(gè)隊(duì)列服務(wù),需要做如下開發(fā)步驟:
1.創(chuàng)建隊(duì)列,發(fā)送消息
<?php $routingkey = 'key'; //設(shè)置你的連接 $conn_args = array('host' => 'localhost', 'port' => '5672', 'login' => 'guest', 'password' => 'guest'); $conn = new AMQPConnection($conn_args); if ($conn->connect()) { echo "Established a connection to the broker \n"; } else { echo "Cannot connect to the broker \n "; } //你的消息 $message = json_encode(array('Hello World3!', 'php3', 'c++3:')); //創(chuàng)建channel $channel = new AMQPChannel($conn); //創(chuàng)建exchange $ex = new AMQPExchange($channel); $ex->setName('exchange2'); //創(chuàng)建名字 $ex->setType(AMQP_EX_TYPE_DIRECT); $ex->setFlags(AMQP_DURABLE); echo "exchange2 status:" . $ex->declareExchange(); echo "\n"; for ($i = 0; $i < 100; $i++) { if ($routingkey == 'key2') { $routingkey = 'key'; } else { $routingkey = 'key2'; } $ex->publish($message, $routingkey); }
這樣就產(chǎn)生了50條消息,但是沒有消費(fèi)者,所以沒有被消費(fèi)
2.創(chuàng)建消費(fèi)者,消費(fèi)信息
<?php set_time_limit(0); $e_name = 'exchange2'; //交換機(jī)名 $q_name = 'queue2'; //隊(duì)列名 $k_route = 'key2'; //路由key //連接RabbitMQ $conn_args = array('host' => '127.0.0.1', 'port' => '5672', 'login' => 'guest', 'password' => 'guest', 'vhost' => '/'); $conn = new AMQPConnection($conn_args); $conn->connect(); $channel = new AMQPChannel($conn); //創(chuàng)建交換機(jī) $ex = new AMQPExchange($channel); $ex->setName($e_name); $ex->setType(AMQP_EX_TYPE_DIRECT); //direct類型 $ex->setFlags(AMQP_DURABLE); //持久化 echo "Exchange Status:" . $ex->declareExchange() . "\n"; //創(chuàng)建隊(duì)列 $q = new AMQPQueue($channel); $q->setName($q_name); $q->setFlags(AMQP_DURABLE); //持久化 //綁定交換機(jī)與隊(duì)列,并指定路由鍵 echo 'Queue Bind: ' . $q->bind($e_name, $k_route) . "\n"; //阻塞模式接收消息 echo "Message:\n"; $q->consume('processMessage', AMQP_AUTOACK); //自動(dòng)ACK應(yīng)答 $conn->disconnect(); /** * 消費(fèi)回調(diào)函數(shù) * 處理消息 */ function processMessage($envelope, $queue) { var_dump($envelope->getRoutingKey()); $msg = $envelope->getBody(); echo $msg . "\n"; //處理消息 }
運(yùn)行之后
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python進(jìn)程與線程操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》、《Python+MySQL數(shù)據(jù)庫程序設(shè)計(jì)入門教程》及《Python常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
- Python rabbitMQ如何實(shí)現(xiàn)生產(chǎn)消費(fèi)者模式
- Python RabbitMQ實(shí)現(xiàn)簡(jiǎn)單的進(jìn)程間通信示例
- Python實(shí)現(xiàn)RabbitMQ6種消息模型的示例代碼
- Python操作rabbitMQ的示例代碼
- python實(shí)現(xiàn)RabbitMQ的消息隊(duì)列的示例代碼
- python RabbitMQ 使用詳細(xì)介紹(小結(jié))
- Python RabbitMQ消息隊(duì)列實(shí)現(xiàn)rpc
- Python+Pika+RabbitMQ環(huán)境部署及實(shí)現(xiàn)工作隊(duì)列的實(shí)例教程
- 利用Python學(xué)習(xí)RabbitMQ消息隊(duì)列
- 基于python實(shí)現(xiàn)監(jiān)聽Rabbitmq系統(tǒng)日志代碼示例
相關(guān)文章
Python實(shí)現(xiàn)調(diào)度算法代碼詳解
這篇文章主要介紹了Python實(shí)現(xiàn)調(diào)度場(chǎng)算法代碼詳解,具有一定參考價(jià)值,需要的朋友可以了解下。2017-12-12Python OpenCV利用筆記本攝像頭實(shí)現(xiàn)人臉檢測(cè)
這篇文章主要為大家詳細(xì)介紹了Python OpenCV利用筆記本攝像頭實(shí)現(xiàn)人臉檢測(cè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04python學(xué)習(xí)教程之Numpy和Pandas的使用
最近要對(duì)一系列數(shù)據(jù)做同比比較,需要用到numpy和pandas來計(jì)算,下面這篇文章主要給大家介紹了關(guān)于python學(xué)習(xí)教程之Numpy和Pandas使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒。2017-09-09