我试图在几天内搜索我的问题,但没有找到令人满意的解决方案。
所以这是我的情况:
我有一个应用程序在不同的节点上运行,例如3. 这3个节点中的每个节点上的每个应用程序都需要使用相同的消息。
我怎样才能做到这一点?
以下是我厌倦的一些方法:
- 将3个使用者/节点绑定到一个队列。问题是RabbitMQ使用循环策略来确保负载平衡。因此,对于每条消息,只有一个消费者。
可能的解决方案:有没有办法关闭循环策略?
- 使用FANOUT交换。问题是我们使用自动部署工具,因此每个节点的配置完全相同,导致3个使用者/节点声明一个相同的队列。结果证明这是上面第一个失败的方法。
- 每个应用程序/节点使用某些唯一且随机的队列名称声明不同的队列,并将这些队列绑定到FANOUT交换。问题是当应用程序断开连接并与RabbitMQ重新连接时,它将因随机队列名称而声明一个新队列,并且无法消耗在断开连接时堆积在早期队列上的消息。
醇>
提前感谢您的回复。