我使用spring-amqp连接到rabbitmq节点集群( A、B和C)。假设集群中的一个rabbitmq节点关闭(C关闭)。另外,假设有两个消息接收器( Receiver_1和Receiver_2 )正在使用到节点C的连接。当C出现故障时,Receiver_1和Receiver_2是否会自动切换它们的连接以连接到A或B?当C再次出现时会发生什么呢?是否将一些接收器连接重新分配为使用C?
发布于 2012-11-02 07:32:31
RabbitMQ本身不支持故障切换。当RabbitMQ集群中的一个节点宕机时,将选举一个新的主节点,其余集群的业务将照常继续。
因此,在您的示例中,Receiver_1和Receiver_2将需要处理C出现故障的情况,并知道尝试连接到A或B。
您可以在此处查看官方文档:http://www.rabbitmq.com/clustering.html#clients
就我个人而言,我使用haproxy (http://haproxy.1wt.eu/)为我所有的客户机实现连接负载均衡。haproxy不仅会进行负载均衡,还会自动检测一个节点何时离线,并将所有连接重新路由到另一个活动节点。如上所述,它将不会是无缝的。应用程序仍将断开连接,因此您需要捕获异常并尝试重新连接。
https://stackoverflow.com/questions/13186625
复制相似问题