首页 > 解决方案 > RabbitMQ 独占队列与独占消费者有什么区别?

问题描述

无法解决和之间的差异exclusive queueexclusive consumer并且想知道我是否正确。

假设我有一个queue,consumer1consumer2

我的理解是:

排他队列

如果queueexclusive queue并且被创建consumer1,只能consumer1访问队列,当consumer1宕机时,queue被删除。听起来消息随后丢失了。

独家消费者

如果queue不是独占的并且是由 创建的consumer1,那么两者consumer1consumer2都可以从中读取。如果consumer1下降,consumer2可以从中断的地方继续。如果consumer1exclusive consumer并且首先开始订阅,则consumer2无法访问queue,而它被锁定consumer1

exclusive queue对我来说听起来像是一个奇怪的用例,而exclusive consumer听起来像是“一次只能从队列中处理一个消费者”的正确解决方案。

标签: rabbitmq

解决方案


我认为它们之间的区别在于,对于exclusive队列,它只能被consumers用于声明队列的同一连接上的那些消耗。当此连接关闭或断开时,exclusive队列会自动关闭rabbitmq。它的用例是您通常希望在exclusive(私人)消费者退出或断开连接时销毁队列。

exclusive普通消费者的用例queue略有不同。私人消费者可能已经消失或断开连接,但另一个消费者可以成为下一个exclusive消费者的继任者,并且它可能不必与rabbitmq用于声明queue.

本质上,这两个用例都是关于允许exclusive访问队列,但后者不那么严格。


推荐阅读