NodeJS rabbitmq队列中消息过多,队列未过期

mfpqipee  于 2023-10-17  发布在  Node.js
关注(0)|答案(1)|浏览(177)

我使用rabbitmq 3.7.0nodejs使用typescript中的this库。所有消费者都是{noAck: false, exclusive: false},所有队列都是{prefetch:1, expires: 14400000, durable:false}(4小时)。
我有很多队列,没有任何挂起的ack,但仍然持有数百条消息。除此之外,队列不会在应该过期的时候过期,这将在几天后产生性能问题。我还没有找到任何理由,为什么消息仍然在队列后,确认过程。
谢谢
编辑(1)-我从答案中感知到的缺失信息
据我所知,没有活跃的消费者排队这么多。是否可以在管理工具中确认此信息?
使场景复杂化的是,我不能简单地删除最后一个消费者之后的队列,因为我可以使用它来恢复中断的会话,如果我没有在最后一个消费者之后删除de queue,队列将继续更新。但是expires参数应该足够了。
管理工具中的一些快照:

vddsk6oq

vddsk6oq1#

我建议你阅读expires工作原理的文档:https://www.rabbitmq.com/ttl.html#queue-ttl
如果你的队列没有过期,这意味着你很可能有一个消费者在上面注册。还有其他几种情况下,队列不会过期。
至于那些应该被确认但仍留在队列中的消息,我唯一的解释是,它们可能根本没有被传递。
最后,如果没有更多的信息或可靠的复制者,就无法提供更多的帮助,因为所提供的信息量有限。

相关问题