如何解决RabbitMQ 队列在使用中过期
我使用 EasyNetQ (ISubscriptionConfiguration.WithExpires
) 创建了具有 x-expires
策略的 RabbitMQ 队列。我遇到了拥有消费者的队列过期并被删除的情况,意外终止了我对队列的订阅。
official RabbitMQ docs on Queue TTL 指定
队列只有在不使用时才会在一段时间后过期(例如没有消费者)。
它还定义了“未使用”的含义
队列没有消费者,队列最近没有被重新声明(重新声明会更新租约),并且basic.get至少在到期期限内没有被调用。 >
基于此,我希望队列只有在没有消费者的情况下才会过期。这意味着,即使队列在过期期间没有收到消息,队列的使用者也会阻止它过期。
我对文档的解释不正确吗?如果我的队列有消费者,为什么我的队列会过期?
解决方法
从您的政策或队列声明中删除自动删除。
自动删除会在所有消费者断开连接时立即删除队列,因此基本上是x-expires=0。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。