RabbitMQ 队列在使用中过期

时间:2021-05-06 20:50:03

标签: rabbitmq amqp easynetq

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

official RabbitMQ docs on Queue TTL 指定

<块引用>

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

它还定义了“未使用”的含义

<块引用>

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

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

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

1 个答案:

答案 0 :(得分:0)

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

自动删除会在所有消费者断开连接时立即删除队列,因此基本上是x-expires=0。