2

我使用 spring-amqp 连接到一组 rabbitmq 节点(A、B 和 C)。假设集群中的一个 rabbitmq 节点关闭(C 关闭)。此外,假设有两个消息接收器(Receiver_1 和 Receiver_2)正在使用与节点 C 的连接。当 C 出现故障时,Receiver_1 和 Receiver_2 是否会自动切换它们的连接以连接到 A 或 B?当 C 再次出现时会发生什么?某些接收器连接是否被重新分配以使用 C ?

4

1 回答 1

2

RabbitMQ 本身不支持故障转移。当 RabbitMQ 集群中的一个节点出现故障时,将选举一个新的主节点,并且集群其余部分的业务将照常进行。

因此,在您的示例中,Receiver_1 和 Receiver_2 将需要处理 C 出现故障的情况,并且知道尝试连接到 A 或 B。

您可以在此处查看官方文档:http ://www.rabbitmq.com/clustering.html#clients

就我个人而言,我使用 haproxy (http://haproxy.1wt.eu/) 来对所有客户端的连接进行负载平衡。haproxy 不仅会进行负载平衡,还会自动检测节点何时下线并将所有连接重新路由到另一个活动节点。话虽如此,它不会是无缝的。应用程序仍将断开连接,因此您需要捕获异常并尝试重新连接。

于 2012-11-01T23:32:31.397 回答