訊息佇列-RabbitMq(PHP)
阿新 • • 發佈:2018-12-25
首先進行安裝:
將composer.json檔案放在你的專案中
composer.json
{"require":{"php-amqplib/php-amqplib":"2.5.*"}}
將composer進行全域性安裝之後在專案所在目錄執行:composer install即可下載RabbitMq所需庫檔案。
全部下載之後的目錄結構為:
(composer.json檔案存放在rabbit(我的專案名稱)目錄中)
下面是一個簡單的“Hello World”測試程式 如圖所示:“P”是訊息釋出者,“C”是訊息的消費者,中間紅色的是我們的佇列,這是一個訊息的快取區
首先構建一個傳送訊息的檔案send.php,即“P”,釋出訊息
接著我們需要接受訊息,建立一個檔案:reveive.php
下面是一個簡單的“Hello World”測試程式 如圖所示:“P”是訊息釋出者,“C”是訊息的消費者,中間紅色的是我們的佇列,這是一個訊息的快取區
首先構建一個傳送訊息的檔案send.php,即“P”,釋出訊息
//引用所需檔案 require_once __DIR__ . '/vendor/autoload.php'; use PhpAmqpLib\Connection\AMQPStreamConnection; use PhpAmqpLib\Message\AMQPMessage; //建立一個連線通道,宣告一個可以傳送訊息的佇列hello $connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest'); $channel = $connection->channel(); $channel->queue_declare('hello', false, false, false, false); //定義一個訊息,訊息內容為Hello World! $msg = new AMQPMessage('Hello World!'); $channel->basic_publish($msg, '', 'hello'); //傳送完成後列印訊息告訴釋出訊息的人:傳送成功 echo " [x] Sent 'Hello World!'\n"; //關閉連線 $channel->close(); $connection->close();
接著我們需要接受訊息,建立一個檔案:reveive.php
分別執行send.php和receive.phprequire_once __DIR__ . '/vendor/autoload.php'; use PhpAmqpLib\Connection\AMQPStreamConnection; $connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest'); $channel = $connection->channel(); $channel->queue_declare('hello', false, false, false, false); echo ' [*] Waiting for messages. To exit press CTRL+C', "\n"; $callback = function($msg) { echo " [x] Received ", $msg->body, "\n"; }; //在接收訊息的時候呼叫$callback函式 $channel->basic_consume('hello', '', false, true, false, false, $callback); while(count($channel->callbacks)) { $channel->wait(); }