保持持久队列及其绑定但挂起其消费者的最佳方式是什么?RabbitMQ挂起队列消耗
用例如下:我想“让它崩溃”并停止处理消息,如果我们收到一堆我们无法处理的消息(例如数据库关闭或架构问题),但希望不断聚合队列。这是允许发布但暂停使用。
我能想到的三种解决方案:
- 我可以绑定到队列中的所有消费者不断拒绝消息,并重新排队,但这是有点浪费资源,更何况我已经编程做以上逻辑。
- 我可以打电话给
basic.cancelConsumer
上的所有消费者(见下文)的spring-amqp - 还是在方面,我想我可以对所有绑定到队列中的SimpleMessageListenerContainers叫
shutdown
。
#1
我们已经在做,因为邮件正在被拒绝。问题是这最终会像一个无限的循环失败,如果你的日志记录失败,甚至更多的资源被浪费了。
#3
似乎是理想的,但我必须知道一些如何知道所有的消息监听器,然后通知他们关机。我想我可以使用扇出交换来通知队列需要暂停。我觉得RabbitMQ必须为这个逻辑内置一些东西。另一个问题是您可以将多个队列绑定到消息容器(并非所有队列都可能需要暂停)。
对于#2
我知道我可以cancel the consumer其consumerTag
但问题(假设是上面做正确的方式)是我在哪里得到的consumerTag
是清单到一个队列?
谢谢。我知道如何在上面声明像兔子一样的队列。看起来我必须自己管理我的消费者,这是我已经走下的路。如果兔子有明智的选择来暂停队列的使用,那将会很好。 – 2013-03-08 19:11:27
你可以从连接做的唯一的事情是强制关闭它从管理员这不是你正在寻找 – 2013-03-08 20:48:50