使用rabbitmq集群进行日志存储

使用rabbitmq集群进行日志存储,rabbitmq,cluster-computing,logstash,Rabbitmq,Cluster Computing,Logstash,我在HAproxy负载平衡器后面有一个3节点的Rabbitmq集群。当我关闭一个节点时,Rabbitmq成功地将队列切换到其他节点。但是,我注意到Logstash停止从队列中提取消息,除非我重新启动它。这是rabbitmq运行方式的问题吗?i、 e.它停用所有活动消费者。我不确定日志存储是否具有重试功能。有人遇到过这个问题吗?引用rabbit mq文档,第一页 什么是复制的?设备运行所需的所有数据/状态 RabbitMQ代理跨所有节点复制。这是个例外 消息队列,默认情况下位于一个节点上,但 可以

我在HAproxy负载平衡器后面有一个3节点的Rabbitmq集群。当我关闭一个节点时,Rabbitmq成功地将队列切换到其他节点。但是,我注意到Logstash停止从队列中提取消息,除非我重新启动它。这是rabbitmq运行方式的问题吗?i、 e.它停用所有活动消费者。我不确定日志存储是否具有重试功能。有人遇到过这个问题吗?

引用rabbit mq文档,第一页

什么是复制的?设备运行所需的所有数据/状态 RabbitMQ代理跨所有节点复制。这是个例外 消息队列,默认情况下位于一个节点上,但 可以从所有节点看到和访问

正在使用镜像队列的客户端可能希望知道这一点 他们一直使用的队列已故障转移。当 镜像队列故障转移,知道已发送哪些消息 消费者丢失的信息,以及所有未确认的信息 使用已重新传递的标志集重新传递。消费者不妨 我知道这会发生

如果是这样,他们可以使用参数x-cancel-on-ha-failover set 这是真的。然后,在故障切换时,他们的消费将被取消,并且 已发送消费者取消通知。然后是消费者的 重新发布basic.consume以重新开始消费的责任

那么,这一切意味着什么:

  • 你必须镜像队列
  • 消费者应使用手动确认
  • 消费者应该自己重新连接

所以你的问题的答案是不,这不是rabbitmq的问题,这只是它的工作原理。重新连接取决于客户。

一个非常好的回答。谢谢,不客气。它是否帮助你或解决了你的问题?如果你都不能说出遗漏了什么,或者不清楚什么?你的回答解释了兔子的工作原理。然而,日志存储问题仍然存在。那么,日志存储是否连接到负载均衡器IP?队列镜像了吗?是的。队列是HA复制的。我也有同样的问题,您找到解决方案了吗?