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

php RabbitMQ

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


php amqp 消息队列 RabbitMQ 交换器类型 广播 fanout (四)_第1张图片


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

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

1、是否忽略routing_key

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


发送信息的代码:send.php

connect();

$channel =  new AMQPChannel($connect);

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

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

$connect->disconnect();
?>


接收信息的代码:receive.php

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 测试结果如下

php amqp 消息队列 RabbitMQ 交换器类型 广播 fanout (四)_第2张图片


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

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


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

php amqp 消息队列 RabbitMQ 交换器类型 广播 fanout (四)_第3张图片

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


你可能感兴趣的:(php,消息队列)