我有一个工作者在rabbitmq上订阅了一个预先存在的队列。出于冗余目的,我们决定添加另一个连接到同一队列的worker。
是否可以设置第一个worker获取队列的独占连接,以便第二个worker无法使消息出列,从而充当备用工作者?
答案 0 :(得分:0)
嗯......声明队列时,可以设置exclusive
标志。这只为声明它的客户提供“访问权限”。
在你的情况下,队列已经存在,所以你不能通过将exclusive
标志设置为true来再次声明它(我假设因为队列是为其他人预先创建的,所以flag是假的。)
考虑到您一次只想要一个消费者(我没有问为什么必须是一个消费者),因此解决方案很少。 一个是你有某种消费者监督者会产生消费者,并确保只有一个人在一个时刻活着。实际上 - 它会监视一个消费者并在它被阻止或死亡时重新启动它......
您还可以尝试使用consumer priorities并以优先消费者拥有更大预取的方式调整消费者,但我认为它不适合您需要的内容。