当前位置: 首页 > 知识库问答 >
问题:

rabbitmq队列中的消息太多,队列未过期

鲍宁
2023-03-14

我将RabbitMQ 3.7.0NodeJS一起使用TypeScript中的这个库。所有使用者均为{noack:false,exclusive:false},所有队列均为{prefetch:1,expires:14400000,durabile:false}(4小时)。

我有很多队列没有任何挂起的ack,但仍然保存着数百条消息。此外,队列不会在应该过期时过期,这将在几天后产生性能问题。我没有找到任何理由来解释为什么消息在ack处理之后仍然在队列中。

谢谢

管理工具中的一些快照:

共有1个答案

岳俊雅
2023-03-14

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

如果您的队列没有过期,则表示您很可能在其上注册了一个使用者。还有一些其他情况,队列不会过期。

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

注意:RabbitMQ团队监视RabbitMQ-users邮件列表,有时只回答有关StackOverflow的问题。

 类似资料:
  • 在队列选项卡的rabbitMQ web界面上,我看到了“概述”面板,我在其中找到了以下内容: 排队消息: 准备好了 未确认 总数 我猜“总数”是多少。但什么是“准备就绪”和“未确认”?“准备好了”——传递给消费者的信息?“未确认”-? 消息费率: 发表 交付 重新交付 承认 这些信息是什么?尤其是“重新交付”和“确认”?这是什么意思?

  • 我发送消息从JavaSpring Boot应用程序到消费者是Python应用程序。 除了输入命令rabbitmqctl list\u queues时,一切正常,它显示视频队列0,这意味着队列中没有消息。 消费者正在接收消息并执行一些长过程;所以如果我连续发送多条消息,应该会有一些消息在队列中等待。我说得对吗? 制片人: 消费者 在哪里可以看到我声明的队列上的消息?因为虽然我知道队列中有消息,但使用

  • 问题内容: 我们正在使用amqplib来发布/使用消息。我希望能够读取队列中的消息数(理想情况下是已确认和未确认)。这将使我能够向管理员用户显示良好的状态图,并检测某个组件是否无法满足负载需求。 我在amqplib文档中找不到有关读取队列状态的任何信息。 有人可以指出我正确的方向吗? 问题答案: 使用皮卡: 使用PyRabbit: 使用HTTP 句法: 例: 注意:默认虚拟主机是需要转义为 使用C

  • 主要内容:9. RabbitMQ 其他知识点,9.1 幂等性,9.2 优先级队列,9.3 惰性队列9. RabbitMQ 其他知识点 9.1 幂等性 9.1.1 概念 用户对于统一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生副作用 举个栗子,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,会进行第二次扣款,返回结果依然成功。用户查询余额发现多扣钱了,流水记录也变成了两条。 在以前的但应用系统中,我们只需要把数据操作放入事务

  • 为什么已经拥有了共享内存时需要消息队列呢? 这将是多种原因,让我们将其分解为多个点来简化 - 据了解,一旦消息被一个进程接收到,它将不再可用于任何其他进程。 而在共享内存中,数据可供多个进程访问。 如果想使用小信息格式进行通信。 当多个进程同时进行通信时,共享内存数据需要同步保护。 使用共享内存的写入和读取频率很高,那么实现功能将会非常复杂。 在这种情况下不值得使用。 如果所有的进程不需要访问共享

  • 一、消息模型 点对点 发布/订阅 二、使用场景 异步处理 流量削锋 应用解耦 三、可靠性 发送端的可靠性 接收端的可靠性 参考资料 一、消息模型 点对点 消息生产者向消息队列中发送了一个消息之后,只能被一个消费者消费一次。 发布/订阅 消息生产者向频道发送一个消息之后,多个消费者可以从该频道订阅到这条消息并消费。 发布与订阅模式和观察者模式有以下不同: 观察者模式中,观察者和主题都知道对方的存在;