先決條件
已安裝PHP,Erlang和RabbitMQ,
安裝PHP環境下使用的RabbitMQ第三方庫——php-amqplib
使用composer安裝php-amqplib庫,
生產者代碼
<?php require 'vendor/autoload.php'; use PhpAmqpLib\Connection\AMQPStreamConnection; use PhpAmqpLib\Message\AMQPMessage; $conf = [ 'host' => 'localhost', 'port' => 5672, 'user' => 'admin', 'password' => 'admin', 'vhost' => '/', ]; $exchangeName = 'testExch'; //交換機名稱 $queueName = 'testQue'; //佇列名稱 $routingKey = 'testRoute'; //路由關鍵字(也可以省略) //建立生產者與mq之間的連接 $conn = new AMQPStreamConnection($conf['host'], $conf['port'], $conf['user'], $conf['password'], $conf['vhost']); $channel = $conn->channel(); //在已連接基礎上建立生產者與mq之間的通道 $channel->exchange_declare($exchangeName, 'direct', false, true, false); //宣告初始化交換機 $channel->queue_declare($queueName, false, true, false, false); //宣告初始化一條佇列 $channel->queue_bind($queueName, $exchangeName, $routingKey); //將佇列與某個交換機進行系結,并使用路由關鍵字 for ($i=1; $i<=20; $i++){ $msgBody = json_encode(["name" => "WCW", "no" => $i]); $msg = new AMQPMessage($msgBody, ['content_type' => 'text/plain', 'delivery_mode' => 2]); //構建訊息 $ret = $channel->basic_publish($msg, $exchangeName, $routingKey); //發布訊息到某個交換機 } $channel->close(); $conn->close();
消費者代碼
<?php require 'vendor/autoload.php'; use PhpAmqpLib\Connection\AMQPStreamConnection; $conf = [ 'host' => 'localhost', 'port' => 5672, 'user' => 'admin', 'password' => 'admin', 'vhost' => '/', ]; $exchangeName = 'testExch'; //交換機名 $queueName = 'testQue'; //佇列名稱 $routingKey = 'testRoute'; //路由關鍵字(也可以省略) //建立生產者與mq之間的連接 $conn = new AMQPStreamConnection($conf['host'], $conf['port'], $conf['user'], $conf['password'], $conf['vhost']); $channel = $conn->channel(); //在已連接基礎上建立生產者與mq之間的通道 $channel->queue_declare($queueName, false, true, false, false); //宣告初始化一條佇列 //回呼函式,資料處理 $callback = function($msg) { echo " Received: ", $msg->body, "\n"; }; $channel->basic_consume($queueName, '', false, true, false, false, $callback); //消費接收訊息 //監聽訊息,一有訊息,立馬就處理 while(count($channel->callbacks)) { $channel->wait(); }
效果測驗
執行生產者程式:

執行消費者程式:

訊息接收成功!
至此,轉載請注明出處,記得掃碼打賞支持哦,謝謝!

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/282517.html
標籤:PHP
