根据https://groups.google.com/forum/#!topic/rabbitmq-users/vvWAymjDww4,如果队列跨多个服务器(节点)进行镜像,则发布者写入哪个队列都没有关系-RabbitMQ始终将邮件转发到主节点(队列是首次创建的。)
如果是这种情况,那么如果所有消息最终仍将路由到同一节点,那么将负载均衡器放在节点前面有什么意义?看来主节点将始终承担全部负载。
答案 0 :(得分:1)
我将通过一个示例场景使其易于理解:
基本上,所有内容都与服务可用性有关。当您连接到一个节点,并且您要使用的队列不是主节点时,RabbitMQ在内部将您重定向到主节点,这最终可能会在集群中创建许多互连。
但是,如果主节点发生故障,RabbitMQ会选择一个新节点,因此在那里添加LB是一个很好的选择,客户端将重新连接到LB,并将其重定向到工作实例。客户的过程是透明的。
最后,根据您的用例,您可以做一些聪明的事情来确保客户端始终连接到主队列所在的实例,但这实际上取决于您的特定要求。