RabbitMQ队列在使用时过期

RabbitMQ队列在使用时过期,rabbitmq,amqp,easynetq,Rabbitmq,Amqp,Easynetq,我使用EasyNetQ创建了具有x-expires策略的RabbitMQ队列。我遇到的情况是,有使用者的队列过期并被删除,从而意外地终止了我对该队列的订阅 文件规定: 队列只有在未使用时才会在一段时间后过期(例如,没有消费者) 它还将“未使用”定义为含义 队列没有使用者,队列最近未重新声明(重新声明续订租约),并且至少在到期期间内未调用basic.get 基于此,我认为队列只有在没有消费者的情况下才会过期。这意味着,即使队列在过期期间没有收到消息,队列的使用者也会阻止它过期 我对文件的解释有误吗

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

文件规定:

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

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

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

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


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

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


自动删除将在所有使用者断开连接时立即删除队列,因此它基本上是一个x-expires=0。

您的解释是正确的。过期时间有多长,你确定没有网络打嗝吗?我的
x-expires
值是
2880000
(8小时),所以我认为在这样的时间范围内网络打嗝是可能的。当我最后一次体验到这一点时,我仔细检查了产生消费者的连接是否仍然存在,它确实存在。我还启用了
自动删除
。EasyNetQ创建的队列是否有可能被网络故障自动删除?是的,当所有消费者断开连接时,自动删除会立即删除队列,因此它基本上是一个x-expires=0。