【问题标题】:Connecting to an existing RabbitMQ Queue exclusively以独占方式连接到现有的 RabbitMQ 队列
【发布时间】:2017-06-18 06:51:51
【问题描述】:

我有一个订阅了 rabbitmq 上预先存在的队列的工作人员。出于冗余目的,我们决定添加另一个连接到同一队列的工作人员。

是否可以设置第一个工作人员获取到队列的独占连接,以便第二个工作人员无法将消息出列并因此充当备用工作人员?

【问题讨论】:

  • 所以基本上你希望在任何给定时刻只有 1 个消费者在消费队列?
  • 是的,使用 Worker 作为故障转移

标签: .net rabbitmq message-queue easynetq


【解决方案1】:

嗯...当您声明一个队列时,您可以设置exclusive 标志。这仅向声明它的客户端授予“访问权限”。

在您的情况下,队列已经存在,因此您不能通过将 exclusive 标志设置为 true 来再次声明它(我假设由于队列是预先创建供其他人使用的,所以这个标志是假)。

考虑到您一次只需要一个消费者(我没有问为什么必须是一个),解决方案很少。 一种是你有某种消费者监督机构,它会催生消费者并确保在某一时刻只有一个人活着。实际上 - 它只会监控一个消费者并在它被阻止或死亡时重新启动它......

您也可以尝试使用 consumer priorities 并调整消费者,使优先消费者具有更大的预取,但我认为它不适合您的需求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 2021-09-27
    • 1970-01-01
    相关资源
    最近更新 更多