rabbitmq學習3 發布定閱

2021-08-21 12:11:46 字數 1614 閱讀 9873

<?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通訊...