RabbitMQ队列在使用中过期



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

队列TTL上的官方RabbitMQ文档指定

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

它还定义了";未使用的";意思是

队列没有使用者,队列最近没有重新声明(重新声明将续订租约(,并且basic.get至少在到期期限内没有被调用。

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

我对文件的解释有误吗?如果有消费者,为什么我的队列会过期?

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

当所有使用者都断开连接时,自动删除会立即删除队列,所以它基本上是x-expires=0(断开连接后立即(。

最新更新