1. 程式人生 > >訊息佇列-RabbitMq(PHP)

訊息佇列-RabbitMq(PHP)

首先進行安裝: 將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”,釋出訊息
//引用所需檔案
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
require_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();
}
分別執行send.php和receive.php