Python佇列RabbitMQ 使用方法例項記錄

2022-10-04 16:36:15 字數 2018 閱讀 8182

目前的exchange的路由策略是:每個需要佇列的服務獨享乙個佇列(queue),消費者(consumer)採用ack自動應答模式處理佇列訊息。

如果需要新增乙個佇列服務,需要做如下開發步驟:

1.建立佇列,傳送訊息

php$routingkey = 'key';

//設定你的連線

$conn_args = array('host' => 'localhost', 'port' => '5672', 'login' => 'guest', 'password' => 'guest');

$conn = new amqpconnection($conn_args);

if ($conn->connect()) else

//你的訊息

$message = json_encode(array('hello world3!', 'php3', 'c++3:'));

//建立channel

$channel = new amqpchannel($conn);

//建立exchange

$ex = new amqpexchange($channel);

$ex->程式設計客棧setname('exchange2'); //建立名字

$ex->settype(amqp_ex_type_direct);

$ex->setflags(amqp_durable);

echo "exchange2 status:" . $ex->declareexchange();

echo "\n";

for ($i = 0; $i < 100; $i++) else

$ex->publish($message, $routingkey);

}這樣就產生了50條訊息,但程式設計客棧是沒有消費者,所以沒有被消費

2.建立消費者,消費資訊

<?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();

$mymsgztpchannel = new amqpchannel($conn);

//建立交換機

$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";

//建立佇列

$q = new amqpqueue($channel);

$q->setname($q_name);

$q->setflags(amqp_durable); //持久化

//繫結交換機與佇列,並指定路由鍵

echo 'queue bind: ' . $q->bind($e_name, $k_route) . "\mymsgztpn"; //阻塞模式接收訊息

echo "message:\n";

$q->consume('processmessage', amqp_autoack); //自動ack應答

$conn->disconnect();

/** * 消費**函式 * 處理訊息 */

function processmessage($envelope, $queue)

執行之後

erlang jcl遠端除錯 rabbitmq

job control mode jcl in which jobs can be started,stopped,detached or connected.only the current job can communicate with the shell.通過jcl,我們可以遠端接入乙個er...

mac 使用docker 安裝 rabbitmq

專案要用到rabbitmq 官網說brew install 但是brew update就半天都不成功,突然想起了docker,以前用過一點點,就試著來了一下 docker search rabbitmq management docker pull rabbitmq management docke...

RabbitMQ實戰 什麼是RabbitMQ

mq 首先我們說下mq,mq全稱為message queue,即訊息佇列,是一種應用程式對應用程式的通訊方法。其特點就是一端往訊息佇列中不斷寫入訊息,而另一端則可以讀取或者訂閱佇列中的訊息。訊息 message brokers 從發布者 publishers 亦稱生產者 producers 那兒接受...