我已经实现了RabbitMQ网站上的示例:RabbitMQ Example
现在我在两台不同的计算机上启动了两个消费者。当我发送消息时,第一条消息被发送到computer1,然后第二条消息被发送到computer2,第三条消息被发送到computer1,依此类推。
为什么会这样?如何更改行为以将每条消息发送给每个使用者?
我已经实现了RabbitMQ网站上的示例:RabbitMQ Example
现在我在两台不同的计算机上启动了两个消费者。当我发送消息时,第一条消息被发送到computer1,然后第二条消息被发送到computer2,第三条消息被发送到computer1,依此类推。
为什么会这样?如何更改行为以将每条消息发送给每个使用者?
3条答案
按热度按时间31moq8wy1#
为什么这
正如Yazan所指出的,消息是以循环方式从单个队列中使用的。您所看到的行为是设计好的,这使得增加给定队列的使用者数量变得容易。
如何更改行为以将每条消息发送给每个使用者?
若要让每个使用者接收相同的消息,您需要为每个使用者建立一个队列,并将相同的消息传递到每个队列。
最简单的方法是使用
fanout
交换,这将把每条消息发送到绑定到交换的每个队列,完全忽略路由关键字。如果您需要对路由进行更多控制,可以使用
topic
或direct
交换并管理路由关键字。但是,无论选择哪种交换类型,您都需要为每个使用者分配一个队列,并将每条消息路由到每个队列。
kmb7vmvb2#
您不能这是controlled by the server检查循环调度部分
它决定哪一个消费者轮是。我不知道是否有一套算法,你可以从中挑选,但在最终服务器将控制这一点(我认为循环算法是默认的)
除非您想使用路由密钥和交换
jk9hmnmh3#
我认为这更像是一个设计问题。理想情况下,生产者应该创建交换,消费者创建队列,每个消费者可以创建自己的队列,并将其连接到交换。这确保每个消费者通过其私有队列获得消息。