在RabbitMQ中阻止队列接收消息

时间:2016-12-26 07:58:21

标签: rabbitmq

我使用RabbitMQ作为系统中组件的消息总线,以便相互通信。出于某些原因,我想阻止发布者将消息发送到队列/交换机一段时间,然后再恢复它们。你能建议一种方法来实现它吗?我一直在阅读写关于RabbitMQ插件的内容,但由于我对Erlang知之甚少,所以我不确定它是否可以做我期待的事情。

谢谢, 迈克尔

2 个答案:

答案 0 :(得分:0)

你可以:

  1. 使用此插件https://github.com/rabbitmq/rabbitmq-delayed-message-exchange延迟消息
  2. 停止发布客户端,将它们存储在列表中,然后在您想要的时间后发布

答案 1 :(得分:0)

  

我想阻止发布者暂时向队列/交换机发送消息并稍后恢复。

如果您不关心丢失消息,则只需删除交换 - >队列绑定有问题的队列。这将阻止消息路由到队列。

如果你需要"恢复"从中断的地方接收消息,您无法做到。在最初发布消息时,队列要么接收消息,要么不接收消息。例如,您在消息3发布后发布消息1,2,3,4和5.您"停止"路由到队列。之后,您要重新启动路由并在同一队列中接收消息4和5 ......这是不可能的。

如果你需要"简历"选项,最好的办法是阻止消费者,让消息收集在队列中。当您需要再次开始处理消息时重新启动您的消费者。