rabbitmq - RabbitMQ 队列在使用中过期
问题描述
我x-expires
使用 EasyNetQ ( ISubscriptionConfiguration.WithExpires
)创建了带有策略的 RabbitMQ 队列。我遇到的情况是,有消费者的队列过期并被删除,意外地结束了我对队列的订阅。
Queue TTL 上的官方 RabbitMQ 文档指定
队列只有在不使用时(例如没有消费者)才会在一段时间后过期。
它还将“未使用”定义为含义
队列没有消费者,队列最近没有被重新声明(重新声明更新租约),并且 basic.get 至少在到期期间没有被调用。
基于此,我希望队列只有在没有消费者的情况下才会过期。这意味着,即使队列在过期期间没有收到消息,队列的消费者也会阻止它过期。
我对文档的解释不正确吗?如果有消费者,为什么我的队列会过期?
解决方案
从您的策略或队列声明中删除自动删除。
Auto-delete 会在所有消费者断开连接时立即删除队列,所以它基本上是一个 x-expires=0。
推荐阅读
- excel - 我使用变量的下一个循环代码的 vba 花费了太长时间
- codenameone - 使用 Picker 在 iOS 上崩溃
- python - 递归地将列表分成两半以找到所有数字的乘积
- javascript - 如何使用 Office-js 合并 Word 表格的单元格
- postgresql - pg-promise - 使用批处理时无法接收数据库响应
- ruby-on-rails - Rails + Puma + Transfer-Encoding:分块响应 - 是否支持?
- sql - SQL Server 仅在更改时复制表
- java - TreeMap 不存储信息
- regex - 只接受数字 (0-9) 且不接受空格的正则表达式
- pandas - pandas:根据具有不同 dtype 的索引合并两个 df