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