Windows下PHP呼叫rabbitmq
阿新 • • 發佈:2019-01-10
直接上程式碼吧,程式碼註釋寫得很清楚的,而且網上很多rabbitmq的資料,結合程式碼和註釋看不難的.
//傳送端
send.php
require_once __DIR__ . '/vendor/autoload.php'; use PhpAmqpLib\Connection\AMQPConnection; use PhpAmqpLib\Message\AMQPMessage; //交換器名稱和routekey $exchange = 'router'; //佇列名稱 $queue = 'push_queue'; //連結rabbitmq $conn = new AMQPConnection('127.0.0.1', '5672', 'guest', 'guest', '/') or die('connect faith'); //生成channel 基本上所有的操作都由這個物件執行 $ch = $conn->channel(); //生成佇列 $ch->queue_declare($queue, false, true, false, false); //生成交換器 $ch->exchange_declare($exchange, 'direct', false, true, false); //繫結佇列及routekey routekey關係到消費器是否能接受到訊息 $ch->queue_bind($queue, $exchange); //生成資訊 $msg = new AMQPMessage("hello" ); //傳送資訊到交換器 $ch->basic_publish($msg, $exchange); //關閉channel連結 $ch->close(); //關閉連結 $conn->close();
//接收端
receive.php
接收端程式碼需要在命令列模式下執行.
window+R 執行cmd 然後通過cd指令進入receive.php目錄下
如我的receive.php檔案在D盤下的code檔案中
指令:cd D:\code
若執行後沒有改變指向目錄地址,再輸入d:回車就會切換到剛才輸入的目錄了
然後執行指令:
php receive.php
require_once __DIR__ . '/vendor/autoload.php'; use PhpAmqpLib\Connection\AMQPConnection; //binding_key 關係到是否能夠獲取物件訊息 $binding_key = 'router'; //佇列名稱 $queue_name = 'push_queue'; //連結rabbitmq $conn = new AMQPConnection('localhost', '5672', 'guest', 'guest') or die("connect faith"); //生成channel物件 也可使用$conn->channel()方法生成 $ch = new \PhpAmqpLib\Channel\AMQPChannel($conn); //生成佇列 $ch->queue_declare($queue_name, false, true, false, false); //繫結佇列和binding_key $ch->queue_bind($queue_name, $binding_key); echo 'To exit press Ctrl + C', "\n"; //回撥函式,使用回撥函式輸出獲取的訊息 $cb = function($msg) { echo $msg->body, "\n"; }; //獲取佇列中資訊及繫結回撥函式 $ch->basic_consume('push_queue', '', false, true, false, false, $cb); while (count($ch->callbacks)) { $ch->wait(); } $ch->close(); $conn->close();