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
这样我们测试交换机是否发送给了绑定这两个消息队列
可以看出消息同时发送给两个队列