Java RabbitMQ是否支持多个使用者(不同节点上的一个应用程序)接收相同的消息?

Java RabbitMQ是否支持多个使用者(不同节点上的一个应用程序)接收相同的消息?,java,rabbitmq,rabbitmq-exchange,Java,Rabbitmq,Rabbitmq Exchange,我已经试着搜索我的问题好几天了,但没有找到令人满意的解决方案 我的情况如下: 我有一个应用程序在不同的节点上运行,比如说3这3个节点上的每个应用程序都需要使用相同的消息 我怎样才能做到这一点 以下是一些我已经厌倦的方法: 将3个使用者/节点绑定到一个队列。问题在于RabbitMQ使用循环策略来确保负载平衡。因此,对于每条消息,只有一个消费者。 可能的解决方案:有没有办法关闭循环策略 使用扇出exchange。问题是我们使用的是自动部署工具,因此每个节点的配置完全相同,导致3个使用者/节点声明一

我已经试着搜索我的问题好几天了,但没有找到令人满意的解决方案

我的情况如下:

我有一个应用程序在不同的节点上运行,比如说3这3个节点上的每个应用程序都需要使用相同的消息

我怎样才能做到这一点

以下是一些我已经厌倦的方法:

  • 将3个使用者/节点绑定到一个队列。问题在于RabbitMQ使用循环策略来确保负载平衡。因此,对于每条消息,只有一个消费者。 可能的解决方案:有没有办法关闭循环策略

  • 使用扇出exchange。问题是我们使用的是自动部署工具,因此每个节点的配置完全相同,导致3个使用者/节点声明一个相同的队列。这是上述第一个失败的方法
  • 每个应用程序/节点使用某些唯一和随机的队列名称声明不同的队列,并将这些队列绑定到扇出交换。问题是,当应用程序断开并重新连接RabbitMQ时,由于随机队列名称,它将声明一个新队列,并且无法使用断开连接期间堆积在早期队列上的消息

  • 提前感谢您的回复。

    RabbitMQ的PubSub似乎是通过扇出实现的,因此最干净的解决方案是修复您的自动部署配置。其他任何东西都会是一种更黑客的方法。你所说的RabbitMQ的PubSub的成就是真实的。与ActiveMQ一样,它是Topic/VirtualTopic。事实上,我们正在从ActiveMQ转移到RabbitMQ。在ActiveMQ中,这种情况可以通过主题轻松完成。您可能需要稍微修改一下标题。很明显,您知道它支持PubSub。对于这种特殊情况,这不是您想要的方式。关于扇出方法,如果您取消无名称的队列,服务器将给它一个随机名称,然后您可以将其绑定到扇出交换,声明该队列为独占队列,并在断开连接时自动将其删除,因此现在每个使用者都有自己的队列,此队列将接收发送到exchange的所有邮件,请查看此以了解更多详细信息@Yazan Hi,感谢您的回复。我对您评论中的这句话有一个问题:
    …此队列将接收发送到exchange的所有邮件…
    。正如我在第三种方法中所解释的,当使用者断开并重新连接RabbitMQ时,它仍然会丢失在断开连接期间发送到扇出交换机的消息。