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ù),需要做如下開(kāi)發(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條消息,但是沒(méi)有消費(fèi)者,所以沒(mé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類(lèi)型
$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)容感興趣的讀者可查看本站專(zhuān)題:《Python進(jìn)程與線(xiàn)程操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門(mén)與進(jìn)階經(jīng)典教程》、《Python+MySQL數(shù)據(jù)庫(kù)程序設(shè)計(jì)入門(mén)教程》及《Python常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(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)聽(tīng)Rabbitmq系統(tǒng)日志代碼示例
相關(guān)文章
Django實(shí)現(xiàn)web端tailf日志文件功能及實(shí)例詳解
這篇文章主要介紹了Django實(shí)現(xiàn)web端tailf日志文件功能,本文通過(guò)實(shí)例給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07
Python 的 sum() Pythonic 的求和方法詳細(xì)
Python 的內(nèi)置函數(shù)sum()是一種對(duì)數(shù)值列表求和的有效且Pythonic 的方法。將多個(gè)數(shù)字相加是許多計(jì)算中常見(jiàn)的中間步驟,因此sum()對(duì)于 Python 程序員來(lái)說(shuō)是一個(gè)非常方便的工具。下面文章就讓我們一起來(lái)看具體內(nèi)容吧2021-10-10
基于python編寫(xiě)一個(gè)簡(jiǎn)單的壓力測(cè)試(DDoS)腳本
這篇文章主要為大家詳細(xì)介紹了如何基于python編寫(xiě)一個(gè)簡(jiǎn)單的壓力測(cè)試(DDoS)腳本,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2024-12-12
Django生成數(shù)據(jù)庫(kù)及添加用戶(hù)報(bào)錯(cuò)解決方案
這篇文章主要介紹了Django生成數(shù)據(jù)庫(kù)及添加用戶(hù)報(bào)錯(cuò)解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
教你漂亮打印Pandas DataFrames和Series
在今天的文章中,我們將探討如何配置所需的pandas選項(xiàng),這些選項(xiàng)將使我們能夠“漂亮地打印” pandas DataFrames,需要的朋友可以參考下2021-05-05
TensorFlow獲取加載模型中的全部張量名稱(chēng)代碼
今天小編就為大家分享一篇TensorFlow獲取加載模型中的全部張量名稱(chēng)代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
Python安裝配置OpenGL環(huán)境的全過(guò)程記錄
這篇文章主要給大家介紹了關(guān)于Python安裝配置OpenGL環(huán)境的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
pycharm如何debug for循環(huán)里面的錯(cuò)誤值(推薦)
一般debug時(shí),在for循環(huán)里面的話(huà),需要自己一步一步點(diǎn),如果循環(huán)幾百次那種就比較麻煩,此時(shí)可以采用try except的方式來(lái)解決,這篇文章主要介紹了pycharm如何debug for循環(huán)里面的錯(cuò)誤值,需要的朋友可以參考下2024-07-07

