1. 程式人生 > >Windows下PHP呼叫rabbitmq

Windows下PHP呼叫rabbitmq

直接上程式碼吧,程式碼註釋寫得很清楚的,而且網上很多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();