【问题标题】:RabbitMQ same message to each consumerRabbitMQ 向每个消费者发送相同的消息
【发布时间】:2016-12-15 09:26:03
【问题描述】:

我已经实现了 RabbitMQ 网站上的示例: RabbitMQ Example

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

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

【问题讨论】:

标签: rabbitmq


【解决方案1】:

这是为什么

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

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

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

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

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

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

【讨论】:

    【解决方案2】:

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

    它决定了哪个消费者轮到。我不确定是否有一组算法可供您选择,但最终服务器会控制它(我认为循环算法是默认的)

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

    【讨论】:

    • 所以不可能使用 RabbitMQ 作为某种全局通知发送器,向所有客户端发送相同的消息?
    • 哦,对不起,我看到了你关于路由的提示——所以应该可以这样做。
    • @GreenEyedAndy 这取决于您的要求,您可以阅读并查看它是否符合您的需要
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多