RabbitMQ消息队列-通过fanout模式将消息推送到多个Queue中

本文介绍了如何利用RabbitMQ的fanout模式将消息广播到多个队列,以满足多个功能模块同时获取完整消息的需求。通过示例代码展示了发布者(fanout.php)和两个消费者(ca.php、cb.php)的实现,强调了在fanout模式下消息会被发送到所有已绑定的队列,并讨论了动态创建和删除队列的可能性。
摘要由CSDN通过智能技术生成

本章将介绍如何使用fanout模式将消息推送到多个队列。
有时我们会遇到这样的情况,多个功能模块都希望得到完整的消息数据。例如一个log的消息,一个我们希望输出在屏幕上实时监控,另外一个用户持久化日志。这时就可以使用fanout模式。fanout模式模式不像direct模式通过routingkey来进行匹配,而是会把消息发送到所以的已经绑定的队列中。

RabbitMQ fanout模式

新建fanout.php用来发布消息。ca.php和cb.php用来订阅不同队列消费消息。

fanout.php

<?php

/*
 * RabbitMQ fanout
 * create by superrd
 */

$exchangeName = 'log';
$message = 'log--';
$connection = new AMQPConnection(array('host' => '10.99.121.137', 'port' => '5672', 'vhost' => '/', 'login' => 'superrd', 'password' => 'superrd'));
$connection->connect() or die("Cannot connect to the broker!\n");
try {
        $channel = new AMQPChannel($connection);
        $exchange = new AMQPExchange($channel);
        $exchange->setName($exchangeName);
        $exchange->setType(AMQP_EX_TYPE_FANOUT);
        $exchange->setFlags(AMQP_DURABLE);
        $exchange->declareExchange();

        for($i=0 ; $i<100;$i++){
        $exchange->publish($message.$i,"");

        var_dump("[x] Sent $message $i");
        }
} catch (AMQPConnectionException $e) {
        var_dump($e);
        exit();
}
 $connection->disconnec
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值