lit*_*leK 8 messaging amqp rabbitmq rabbitmq-exchange
我可以使用Publish/Subscribe RabbitMQ Java教程创建一个扇出交换,任何连接的使用者都将收到一条消息的副本.我想在连接任何消费者之前创建交换和绑定,而不是动态地/以编程方式声明交换和绑定.我是通过RabbitMQ管理控制台完成的.但是,出于某种原因,我的消费者正在以循环方式接收消息,而不是全部接收消息的副本.我错过了什么?以下是一些代码段:
出版商:
channel.basicPublish("public", "", null, rowId.getBytes("UTF-8"));
Run Code Online (Sandbox Code Playgroud)
消费者:
QueueingConsumer consumer = new QueueingConsumer(channel);
channel.basicConsume("myqueue", false, consumer);
Run Code Online (Sandbox Code Playgroud)
...在RabbitMQ管理控制台中,我创建了一个"扇出"类型的交换"公共",并且我将该交换的绑定设置为"myqueue".
我很感激任何帮助!
Bri*_*ell 24
听起来您的所有消费者都订阅了相同的队列.当多个消费者订阅同一队列时,RabbitMQ的默认行为是在所有订阅的消费者之间循环消息.请参阅RabbitMQ教程#2:工作队列中的 "循环调度" .
扇出交换用于确保绑定到它的每个队列获得消息的副本,而不是每个消费者.如果您希望每个使用者获取该消息的副本,通常您将让每个使用者创建自己的队列,然后绑定到该交换.我不确定你为什么要试图以编程方式创建/绑定队列,但如果你提前知道订阅者的数量并为每个队列创建一个队列,你可以获得相同的效果.
| 归档时间: |
|
| 查看次数: |
5673 次 |
| 最近记录: |