我想将RabbitMQ设置为具有HA的两个(或更多)节点集群。
用例:客户端生产者应用程序(C#.NET)知道群集有两个节点并发布到群集。各种消费者应用程序(也称为C#.NET)连接到群集并获取生产者生成的所有消息。只要至少有一个节点启动并运行生产者,消费者将继续工作而不会出错。假设节点A和B正在运行而B已经死了一段时间,然后重新启动,然后一段时间A死了,客户端都继续运行而没有收到错误,因为在任何时候都至少有一个节点启动。
可以开箱即用吗?
对于Windows / .NET应用程序环境,是否还有其他更合适的商业标准?
答案 0 :(得分:7)
RabbitMQ v2.6.0现在支持使用主动/主动群集的高可用性队列。微软和许多其他公司已经合作Apache QPid,它具有C#绑定,并且还支持主动/主动HA群集。
答案 1 :(得分:6)
可以开箱即用吗?
没有。当节点发生故障时,其所有连接都将关闭。由于AMQP连接是有状态的,因此没有办法解决这个问题。您可以实现的目标是1)经纪人关闭,2)所有客户端断开连接,3)客户端连接到其他节点(伪装成原始节点)并且没有更明智。
另一方面,兔子目前不支持主动 - 主动HA聚类。它确实支持active-passive clustering和logical clustering形式(可能是您正在寻找的)。