我们有 3 个节点的 RabbitMQ 集群。所有队列都是由 durable & HA_ALL 创建的(当我将鼠标悬停在每个队列的节点信息上时启用镜像)。
问题:我们有一组消费者正在处理来自队列的消息。
从昨天开始我们一直遇到问题,消费者获取消息处理它们并使用 amqplib 调用 ack 函数,我们还可以确认 ack 没有抛出任何错误。但是 ack 消息并没有从队列中删除。其实说白了就是consumer向server发送ack没有错误,但是server不知何故没有收到ack,一直在等待consumer的ack。当它进入这个状态时,所有消费者之间的所有队列似乎都逐渐出现了同样的问题。
RabbitMQ 日志没有表明任何问题,以确认 ack 正在获得成功..我们添加了带有 try catch 的 log post ack() 函数..
当这个问题发生时,如果重新启动我所有的消费者,没有任何问题,它会在一段时间内得到处理并进入问题状态。 (这表明消费者处理和 ack 功能没有问题,而且似乎也不是导致 nack 的流氓有效负载)。
我们还在日志 406 中查找了双重确认错误。找不到。