<?php
require_once __dir__ . '/vendor/autoload.php';
use phpamqplib\connection\amqpstreamconnection;
use phpamqplib\message\amqpmessage;
//1.鏈結伺服器
$connection = new amqpstreamconnection('localhost',5672,'guest','guest');
//2.宣告通道
$channel = $connection->channel();
//建立名為logs的扇型交換機(fanout)
$channel->exchange_declare('logs', 'fanout', false, false, false);
$data = implode(' ', array_slice($argv, 1));
if(empty($data)) $data = "info: hello world!";
$msg = new amqpmessage($data);
//訊息其實是發布到交換機的,佇列等沒指定交換機因為用了匿名交換機
$channel->basic_publish($msg, 'logs');
echo " [x] sent ", $data, "\n";
$channel->close();
$connection->close();
<?php
require_once __dir__ . '/vendor/autoload.php';
use phpamqplib\connection\amqpstreamconnection;
//1.鏈結伺服器
$connection = new amqpstreamconnection('localhost',5672,'guest','guest');
//2.宣告通道
$channel = $connection->channel();
$channel->exchange_declare('logs', 'fanout', false, false, false);
//隨機生成的臨時佇列
//讓伺服器為我們選擇乙個隨機的佇列名(推薦
list($queue_name, ,) = $channel->queue_declare("", false, false, true, false);
$channel->queue_bind($queue_name, 'logs');
echo ' [*] waiting for logs. to exit press ctrl+c', "\n";
$callback = function($msg);
$channel->basic_consume($queue_name, '', false, true, false, false, $callback);
while(count($channel->callbacks))
$channel->close();
$connection->close();
RabbitMQ(三) 發布訂閱
rabbitmq 三 發布訂閱 一 概述 rabbitmq的發布訂閱 publish subscribe 其將生產者和消費者進一步解耦,生產者生產訊息後,交付給交換機,消費者上線後,主動主動去佇列中取資料進行處理。該模式也符合上一節工作佇列中的ack 預取等規則。發布訂閱模式如下圖所示 二 交換機 ...
RabbitMQ學習系列 三 發布 訂閱
編寫生產者 編寫消費者 有幾個概念介紹一下 1 生產者 生產者是傳送訊息的使用者的應用程式2 路由 處理生產者訊息發到哪個佇列3 佇列 佇列是儲存訊息的緩衝器4 消費者 消費者是接收訊息的使用者的應用程式 exchangedeclare string exchange,string type,boo...
RabbitMQ學習筆記(三) 發布與訂閱
在我們使用手機傳送訊息的時候,即可以選擇給單個手機號碼傳送訊息,也可以選擇多個手機號碼,訊息。前面學習工作佇列的時候,我們使用的場景是乙個訊息只能被乙個消費者程式例項接收並處理,但是如果想要 訊息,僅憑之前學到的東西是實現不了的。所以這裡需要引入rabbitmq的發布與訂閱模式。rabbitmq通訊...