首页 > 解决方案 > RabbitMQ 队列在使用中过期

问题描述

x-expires使用 EasyNetQ ( ISubscriptionConfiguration.WithExpires)创建了带有策略的 RabbitMQ 队列。我遇到的情况是,有消费者的队列过期并被删除,意外地结束了我对队列的订阅。

Queue TTL 上的官方 RabbitMQ 文档指定

队列只有在不使用时(例如没有消费者)才会在一段时间后过期。

它还将“未使用”定义为含义

队列没有消费者,队列最近没有被重新声明(重新声明更新租约),并且 basic.get 至少在到期期间没有被调用。

基于此,我希望队列只有在没有消费者的情况下才会过期。这意味着,即使队列在过期期间没有收到消息,队列的消费者也会阻止它过期。

我对文档的解释不正确吗?如果有消费者,为什么我的队列会过期?

标签: rabbitmqamqpeasynetq

解决方案


从您的策略或队列声明中删除自动删除。

Auto-delete 会在所有消费者断开连接时立即删除队列,所以它基本上是一个 x-expires=0。


推荐阅读