【问题标题】:Resend messages from RabbitMQ works strange从 RabbitMQ 重新发送消息很奇怪
【发布时间】:2014-10-20 11:03:45
【问题描述】:

我在 docker 镜像中有 RabbitMQ 集群。 RabbitMQ 有 1 个交换“EventExchange”和 2 个队列:“QueueWait”和“QueueAction”。为重新发送配置的队列:

  • x-dead-letter-exchange: EventExchange
  • x-dead-letter-routing-key: QueueAction
  • 耐用:真实

消费者会监听 QueueAction。

逻辑

  1. 消息被插入队列QueueWait,过期时间可变
  2. 过期消息从 QueueWait 移动到 QueueAction 后
  3. 消费者监听 QueueAction 得到消息

问题

今天我遇到了问题。过期消息不会在 QueueWait 和 QueueAction 之间移动。但是,如果我在 RabbitMQ 的默认 GUI 中从 QueueWait 获取所有消息,它们将成功移动到 QueueAction

环境

  • docker 的图片 - 可能是 docker 问题?
  • RabbitMQ 3.2.4,Erlang R16B03

更新:

我必须在消息级别设置 TTL,因为我有可变的过期依赖于重新发送的尝试。如何通过保证重新发送来保存当前逻辑?

【问题讨论】:

    标签: rabbitmq docker


    【解决方案1】:

    看看https://www.rabbitmq.com/ttl.html#per-message-ttl-caveats

    RabbitMQ 在消息到达队列头部时会过期,因此如果您没有消费者,您的消息很可能不会过期。

    【讨论】:

    • 我错过了这个警告,tnx。但我需要消息的 TTL(不是队列),因为我必须增加重新发送一条消息的间隔。
    猜你喜欢
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多