如何使RabbitMQ队列进行故障转移?

时间:2010-08-05 09:35:07

标签: failover rabbitmq amqp

RabbitMQ默认支持群集,但队列不会被复制并绑定到创建它们的节点。我现在正在寻找使RabbitMQ高度可用的方法,而不是他们记录的DRBD解决方案,因为保留整个服务器除了等待活动服务器停机之外似乎浪费资源。 / p>

我正在考虑一个有两个队列的设置。发布消息时,我希望RabbitMQ集群将消息发送到两个队列中的任何一个队列,无论哪个队列正在运行。我知道,如果发布者尝试发布到已关闭的队列并且发布者可以再次尝试使用其他队列,那么发布者将会收到错误,但我想知道这是否可以在群集级别自动完成,这样我就不会不必编写客户端代码来处理它。可以这样做吗?

3 个答案:

答案 0 :(得分:12)

最近,RabbitMQ添加了主动/主动原生支持。 http://www.rabbitmq.com/ha.html

答案 1 :(得分:6)

查看Alternate Exchanges

这基本上是你要求的,但是有交换而不是队列。想法是发布到指定备用交换的交换(您可以与任何RabbitMQ客户端一起执行此操作)。如果消息可以传递给第一个,它就会。如果不是(因为无法到达或因为没有绑定队列),则使用备用。

答案 2 :(得分:4)

高可用性又称“镜像”队列是Rabbit HA的黄金标准。