Python隊(duì)列RabbitMQ 使用方法實(shí)例記錄
本文實(shí)例講述了Python隊(duì)列RabbitMQ 使用方法。分享給大家供大家參考,具體如下:
目前的exchange的路由策略是:每個需要隊(duì)列的服務(wù)獨(dú)享一個隊(duì)列(queue),消費(fèi)者(consumer)采用ACK自動應(yīng)答模式處理隊(duì)列消息。
如果需要新增一個隊(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); //自動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è)計入門教程》及《Python常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家Python程序設(shè)計有所幫助。
- Python rabbitMQ如何實(shí)現(xiàn)生產(chǎn)消費(fèi)者模式
- Python RabbitMQ實(shí)現(xià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)度場算法代碼詳解,具有一定參考價值,需要的朋友可以了解下。2017-12-12
Python OpenCV利用筆記本攝像頭實(shí)現(xiàn)人臉檢測
這篇文章主要為大家詳細(xì)介紹了Python OpenCV利用筆記本攝像頭實(shí)現(xiàn)人臉檢測,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04
python學(xué)習(xí)教程之Numpy和Pandas的使用
最近要對一系列數(shù)據(jù)做同比比較,需要用到numpy和pandas來計算,下面這篇文章主要給大家介紹了關(guān)于python學(xué)習(xí)教程之Numpy和Pandas使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒。2017-09-09

