基於PHP使用rabbitmq實現訊息佇列

2021-08-09 13:29:05 字數 1926 閱讀 4701

1.從github上面獲取amqp基於php的實現擴充套件

2.建立生產者 send.php

1

require(__dir__ . 『/../protected/vendor/autoload.php『);23

usephpamqplib\connection\amqpstreamconnection;

4use

phpamqplib\message\amqpmessage;56

7$connection = new amqpstreamconnection(『192.168.38.129『, 5672, 『fanwq『, 『ysq『);

8$channel = $connection->channel();

9$channel->queue_declare(『hello『, false, false, false, false

);10

11$msg = new amqpmessage($i.『-hello world! --『 . $_server[『ssh_connection『]);

12$channel->basic_publish($msg, 『『, 『hello『);

13echo " sent 『hello world!『\n";

14$channel->close();

15$connection->close();

view code

3.建立消費者 receive.php

1

require(__dir__ . 『/../protected/vendor/autoload.php『);23

usephpamqplib\connection\amqpstreamconnection;

4use

phpamqplib\message\amqpmessage;56

$connection = new amqpstreamconnection(『192.168.38.129『, 5672, 『fanwq『, 『ysq『);

7$channel = $connection->channel();89

$channel->queue_declare(『hello『, false, false, false, false

);10

echo 『 [*] waiting for messages. to exit press ctrl+c『, "\n";

11$callback = function($msg

) ;14

15$channel->basic_consume(『hello『, 『『, false, true, false, false, $callback

);16

17while(count($channel->callbacks))

view code

4.在cli模式下 分別執行 send.php  receive.php 可以看到如下:

說明生產 消費端均ok。

5.管理 檢視佇列訊息:安裝rabbitmq_management外掛程式

【5-1】檢視當前可用外掛程式:

【5-2】 安裝啟用 rabbitmq_management外掛程式

【5-3】進入rabbitmq_management管理端:

【5-4】 guest使用者沒有許可權 需要授權

rabbitmqctl set_user_tags guest monitoring 

rabbitmqctl set_user_tags guest management

【5-5】登陸成功

基於docker搭建rabbitmq

前提是安裝了docker的環境,這個我之前的文章中有。安裝rabbitmq的步驟和其他的軟體在docker中安裝步驟類似 1 找到映象中心 2 根據要求 找到指定的版本 tag 我這裡是使用的七牛的映象位址,然後使用的3.7 manager 的乙個版本 3 使用指令拉取image 映象檔案到伺服器 ...

RabbitMQ 基於RPC實現

對於使用rabbitmq執行command的情況,有時候需要有返回值資訊。此時相當於client發布乙個command後,並偵聽返回結果的queue,server接收並處理,將處理結果發布到client偵聽的queue中。簡單實現如下 1.client端 private static void rp...

基於Docker安裝RabbitMQ 單機版

docker run name rabbitmq d p 15672 15672 p 5672 5672 rabbitmq 3.7.7 management 後台執行 d 設定主機名 hostname 給容器取名為 rabbitmq name rabbitmq rabbitmq 賬號設定為 e ra...