php amqp 消息队列 RabbitMQ 交换器类型 广播 fanout (四)

php RabbitMQ

fanout类型: 消息发送给绑定的交换机上所有的队列



P是消息 X是交换机 红色格子是消息队列

我们模拟代码测试如下验证:

1、是否忽略routing_key

2、发送给绑定交换机中的所有队列


发送信息的代码:send.php

<?php
$connect =  new AMQPConnection();
$connect->connect();

$channel =  new AMQPChannel($connect);

$exchange =  new AMQPExchange($channel);
$exchange->setName(‘error‘);

$exchange->publish("send message content",‘routing_key‘);

$connect->disconnect();
?>


接收信息的代码:receive.php

<?php

//链接
$connect = new AMQPConnection();
$connect->connect() || die(‘链接服务器失败‘);

//通道
$channel = new AMQPChannel($connect);

//交换机
$exchange = new AMQPExchange($channel);
$exchange->setName(‘error‘);
$exchange->setType(AMQP_EX_TYPE_FANOUT);
$exchange->declare();

//队列
$queue = new AMQPQueue($channel);
$queue->setName(‘queue_name‘);
$queue->declare();

$queue->bind(‘error‘, ‘routing_key‘);


while (true) {
    $queue->consume(‘callback‘);
}

function callback($envelope, $queue) {
    var_dump($envelope->getBody());
    $queue->nack($envelope->getDeliveryTag());
}

?>


1、验证 是否忽略routing_key

send.php中routing_key改为其他的比如 routing_key_test 测试结果如下


2、发送给绑定交换机中的所有队列

receive.php复制创建文件receive_new.php并把receive_new.php中的queue_name 改为 queue_name_test


这样我们测试交换机是否发送给了绑定这两个消息队列

可以看出消息同时发送给两个队列


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。