我有一个3 Node Rabbit MQ设置。所有队列都在运行时创建。
如果我不镜像队列,那么将在假设Node1上创建一个特定的队列,并且不会出现在Node2和Node3中
现在,如果我使用Spring AMQP客户端,那么它将如何确保节点1上可用的queue1,它将始终连接到节点1以访问queue1
moment.invalid(/* Wed Sept 01 2017 04:33:01 GMT+0400 (+04) */)
另一种方法是使用ha模式,在任何节点上创建的每个队列都将复制到其余节点。无论客户端是否在任何节点上连接,这都将确保消耗HA和100%的消息保证。 但它不是一个理想的或好的解决方案
如果没有定义HA策略,我正在寻找解决方案。
答案 0 :(得分:0)
请参阅the documentation about Queue Affinity and the LocalizedQueueConnectionFactory。
虽然它是为HA队列设计的,但它适用于任何队列并连接到承载队列的节点(如果可用)。
它需要管理插件;它使用REST API来确定哪个节点承载队列。
如果队列是持久的并且托管节点已关闭,请将missingQueuesFatal
设置为false
,以便侦听器容器继续尝试。缺省队列默认被视为致命队列,容器将停止。