【问题标题】:Too many messages in rabbitmq queue, queues does not expirerabbitmq队列中的消息太多,队列不会过期
【发布时间】:2018-09-27 21:29:15
【问题描述】:

我正在使用rabbitmq 3.7.0nodejs,在typescript 中使用this 库。所有消费者都是{noAck: false, exclusive: false},所有队列都是{prefetch:1, expires: 14400000, durable:false}(4小时)。

我有很多队列没有任何待处理的确认,但仍然保存着数百条消息。除此之外,队列不会过期,几天后会产生性能问题。我没有找到任何理由说明为什么在确认过程之后消息仍在队列中。

谢谢

编辑 (1) - 缺少我从答案中感知到的信息

据我评估,这样数量的队列没有活跃的消费者。是否可以在管理工具中确认此信息?

使场景复杂化的是,我不能简单地在最后一个消费者之后删除队列,因为我可以使用它来恢复中断的会话,如果我在最后一个消费者之后不删除队列,队列将继续被更新。但是 expires 参数应该足够了。

来自管理工具的一些快照:

【问题讨论】:

    标签: node.js rabbitmq


    【解决方案1】:

    我建议您阅读有关 expires 工作原理的文档:https://www.rabbitmq.com/ttl.html#queue-ttl

    如果您的队列没有过期,这意味着您很可能已经注册了一个消费者。还有其他几个队列不会过期的情况。

    对于那些理应被确认但仍留在队列中的消息,我唯一的解释是它们可能根本没有被传递。

    最后,如果没有更多信息或可靠的复制者,由于所提供的信息量有限,无法提供更多帮助。


    注意:RabbitMQ 团队会监控 the rabbitmq-users mailing list,并且有时只会回答 StackOverflow 上的问题。

    【讨论】:

    • 谢谢卢克,我已经添加了更多信息。我很确定这些队列不再被消耗。是否可以在管理工具中确认?
    • 使用rabbitmqctl 命令行工具。有列出连接和消费者的子命令。
    猜你喜欢
    • 2013-08-09
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 2022-06-10
    • 2013-05-17
    • 2018-08-10
    • 1970-01-01
    相关资源
    最近更新 更多