【发布时间】:2017-05-09 16:17:56
【问题描述】:
我想创建一个集群以实现高可用性,并在该集群前面放置一个负载平衡器。在我们的配置中,我们想手动创建交换和队列,因此创建了一个交换和队列,没有客户端应该调用重新声明它们。我正在使用带有路由键的直接交换,因此可以将消息路由到不同节点上的不同队列中。但是,我在集群和队列方面存在一些问题。
据我在 RabbitMQ 文档中读到的,队列特定于创建它的节点。此外,我们在一个集群中只能有一个同名队列,该队列在发布/消费操作时应该是活动的。如果节点死亡,则该节点上的队列将消失,消息可能无法恢复(当然取决于配置)。因此,即使我将相同的消息路由到不同节点的不同队列,我仍然必须弄清楚如何使用它们才能继续使用消息。
我想知道是否可以在不使用镜像队列的情况下处理这种故障转移场景。假设我想在发生故障时切换到新节点并继续从同一个队列中消费。因为发布者只是使用路由键,这些消息可以进入多个队列,消费者不可能出现同样的情况。
简而言之,我该如何应对第一段中解释的环境中的故障。队列镜像是集群中性能损失的最佳方法还是存在更实用的解决方案?
【问题讨论】:
标签: rabbitmq