我试图在RabbitMQ的两个数据中心之间提供灾难恢复。辅助数据中心是被动的,直到主DC发生故障为止 队列联盟是不合适的,因为它不会移动消息,直到辅助DC中的消费者变为活动状态。除非主DC不可用,否则这种情况不可能发生。 我考虑在主DC中创建一个额外的队列,它将接收每个消息的副本,然后使用Federation或Shovel将这些消息复制到辅助节点。然后,当处理主DC中的“原始”时,该问题将从辅助DC中移除重复消息 将队列镜像到辅助DC中的节点将起作用,但RabbitMQ不会因延迟而在WAN上集群。 还有其他人遇到过这种情况吗?感谢。
答案 0 :(得分:0)
您非常雄辩地解释了使用Federation和Shovels尝试使用RabbitMq解决DR的问题。 Rabbit并非真正旨在通过WAN有效地传输数据。
在WAN上移动数据总是给消息传递解决方案带来问题。例如,IBM MQ具有用于HA的多实例队列管理器,但需要用于DR的SAN,这在产品和处理时间上都变得昂贵。
您可以使用的另一种免费产品(例如Rabbit)是Solace。它内置了HA和DR复制。它可以通过近乎实时地在WAN上异步移动每条消息来管理您描述的主动/被动被动DR方案。一旦准备好将应用程序流量移至备份DC,就可以激活备份实例并开始使用消息。从活动侧使用它时,它会自动“删除重复的消息”。