【问题标题】:Block a queue from receiving message in RabbitMQ在 RabbitMQ 中阻止队列接收消息
【发布时间】:2016-12-26 07:58:21
【问题描述】:

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

谢谢, 迈克尔

【问题讨论】:

  • 添加一些你想要实现的用例示例,你的配置是什么等。你可以停止你的生产者代码发送消息,或者像 Derick 建议的那样,你可以删除队列绑定。您需要提供更多信息才能正确回答。

标签: rabbitmq


【解决方案1】:

你可以:

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

【讨论】:

    【解决方案2】:

    我想暂时停止发布者向队列/交换发送消息,稍后再恢复。

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

    如果您需要从上次中断的地方“恢复”接收消息,则不能这样做。当消息最初发布时,队列要么接收消息,要么不接收消息。例如,您发布消息 1、2、3、4 和 5。在消息 3 发布后,您“停止”路由到队列。稍后,您想重新启动路由并在同一个队列中接收消息 4 和 5...这是不可能的。

    如果您需要“恢复”选项,最好的办法是停止您的消费者并让消息在队列中收集。当您需要再次开始处理消息时重新启动您的消费者。

    【讨论】:

      猜你喜欢
      • 2022-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-09
      • 1970-01-01
      • 2012-02-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多