【问题标题】:RabbitMQ Exclusive Queue Lost MessagesRabbitMQ 独占队列丢失消息
【发布时间】:2016-06-12 15:41:12
【问题描述】:

对于消费者,当声明一个队列为“独占”时,当消费者根据文档断开连接时,队列将被删除。

假设队列中有消息等待处理并且消费者下线,那么当队列被移除时,这个“独占”队列上的所有消息都将丢失。

是否有任何策略或方法来保持队列“独占”但保留队列/代理中的消息以便不会丢失任何内容?

提前致谢。

【问题讨论】:

    标签: queue rabbitmq amqp messagebroker


    【解决方案1】:

    独占队列将在创建的通道断开连接时被删除。

    您可能想要的是独占消费者,当从队列消费时,可以通过将 exclusive 参数设置为 true 来完成。独占消费者确保只有一个消费者可以消费这个队列。它一旦被消费就将所有其他消费者排除在队列之外。

    总而言之,要使队列独占一个消费者并将消息持久保存在该队列中,您应该:

    • 声明队列是持久的
    • 生产者发布消息时,消息的传递方式应设置为持久化
    • 使用独家消费者

    【讨论】:

    • 谢谢肯。这对我有帮助。这隐藏在文档中。