【问题标题】:Block Queue delivery on RabbitMQRabbitMQ 上的块队列传递
【发布时间】:2016-08-25 08:43:12
【问题描述】:

我正在寻找一种方法来暂时阻止消息传递并在不丢失消息的情况下重新激活它。

这种情况是当我们需要迁移消费者时,我不希望消息在 10 分钟内传递。我想阻止队列传递,然后重新激活它。

有没有办法做到这一点?用 Python 还是 PHP?

编辑:

通过这个过程,我不想让消费者断开连接。我希望它像搁置队列,没有消息传递给当前消费者,然后“重新激活它”。

【问题讨论】:

  • 如果队列没有消费者,队列可以存储消息。除非您使用独占和自动删除队列。你用的是什么队列?
  • “经典”队列我猜,除了消费者预取之外没有设置任何选项
  • 我自己没有玩过它,但解决方案可能是delayed message exchange 插件。
  • "I" 在英文中总是大写。 Here 是最重要的琐碎拼写问题及其解决方案。

标签: php python rabbitmq


【解决方案1】:

虽然您可能已经解决了问题: 您可以使用 2 个队列而不是一个。

生产 -> Q1 -> 直接交换 -> Q2 -> 消费

然后您可以动态删除 Exchange 和 Q2 之间的绑定(API 调用“unbind”)。然后 Q2 排空并在 Q1 中排队 Msg 直到您在维护后再次绑定它。

我希望有类似“暂停队列 x 分钟”之类的东西来实现简单的重试机制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-09-30
    • 2021-06-14
    • 1970-01-01
    • 2020-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多