我在HAproxy负载均衡器后面有一个Rabbitmq的3节点集群。当我关闭一个节点时,Rabbitmq成功地将队列切换到其他节点。但是,我注意到Logstash会停止从队列中提取消息,除非我重新启动它。这是rabbitmq运作方式的问题吗?即它会停用所有活跃的消费者。我不确定log stash是否具有任何重试功能。有人遇到过这个问题吗?
答案 0 :(得分:2)
引用rabbit mq文档,首先是clustering的页面
什么是复制?操作a所需的所有数据/状态 RabbitMQ代理程序在所有节点上进行复制。这个例外 是消息队列,它们默认驻留在一个节点上,尽管它们是 是可见的,并且可以从所有节点到达。
从镜像队列中消耗的客户端可能希望知道这一点 他们消耗的队列已经故障转移。当一个 镜像队列故障转移,了解已发送哪些消息 丢失的消费者,以及所有未被承认的消息 用重新传送的标志集重新传送。消费者可能希望 知道这会发生。
如果是这样,他们可以使用参数x-cancel-on-ha-failover set来使用 为真。他们的消费将在故障转移时被取消和a 发送消费者取消通知。那就是消费者 责任重新发布basic.consume再次开始消费。
那么,这一切意味着什么:
所以问题的答案是否定的,这对于rabbitmq来说不是问题,只是它的工作原理。由客户重新连接。