RabbitMQ专有队列与专有使用者之间有什么区别?

时间:2018-10-17 16:47:04

标签: rabbitmq

我无法解决exclusive queueexclusive consumer之间的区别,并且想知道我是否正确。

假设我有一个queueconsumer1consumer2

我的理解是:

专有队列

如果queueexclusive queue并由consumer1创建,则只有consumer1可以访问队列,而当consumer1出现故障时,{{1} }被删除。听起来好像消息丢失了。

独家消费者

如果queue不是由queue创建的,则consumer1consumer1都可以读取。如果consumer2掉线,consumer1可以从停下来的地方捡起。如果consumer2consumer1并先启动订阅,则exclusive consumer在被consumer2锁定的情况下无法访问queue

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

1 个答案:

答案 0 :(得分:0)

我认为它们之间的区别在于,对于exclusive队列,只能由consumers使用,它们在用于声明队列的同一连接上。关闭或断开连接时,exclusive将自动关闭rabbitmq队列。它的用例是您通常希望在exclusive(专用)使用者退出或断开连接时销毁队列。

exclusive消费者在普通queue上的使用情况略有不同。私人消费者可能已经离开或断开连接,但另一个消费者可以成为下一个exclusive消费者的继任者,并且可能不必与用于声明{{ 1}}。

基本上,这两个用例都是关于允许rabbitmq访问队列的,但后者的严格程度较低。