RabbitMQ向每个消费者发送相同的消息

时间:2016-12-15 09:26:03

标签: rabbitmq

我已经从RabbitMQ网站实现了这个例子: RabbitMQ Example

我已将其扩展为具有带按钮的应用程序以发送消息。 现在我在两台不同的计算机上启动了两个用户 当我发送消息时,第一条消息被发送到computer1,然后第二条消息被发送到computer2,thrid发送到computer1,依此类推。

为什么会这样,以及如何更改将每条消息发送给每个消费者的行为?

2 个答案:

答案 0 :(得分:12)

  

为什么会这样

如Yazan所述,消息是以循环方式从单个队列中消耗的。您所看到的行为是设计使用,可以轻松扩展给定队列的使用者数量。

  

如何更改将每条消息发送给每个消费者的行为?

要让每个使用者收到相同的消息,您需要为每个使用者创建一个队列,并将相同的消息传递给每个队列。

最简单的方法是使用fanout交换。这会将每条消息发送到绑定到交换机的每个队列,完全忽略路由密钥。

如果您需要更多控制路由,可以使用topicdirect交换并管理路由密钥。

无论您选择何种类型的交换,您都需要为每个消费者设置一个队列,并将每条消息路由到每个队列。

答案 1 :(得分:2)

你不能controlled by the server检查循环调度部分

决定哪个消费者转向。我不确定你是否可以选择一组算法,但最后服务器会控制它(我认为循环算法是默认的)

除非您想使用路由密钥和交换