从RabbitMQ重新发送消息很奇怪

时间:2014-10-20 11:03:46

标签: rabbitmq docker

我在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收到消息
  4. 问题

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

    环境

    • 码头工人的形象 - 可能是码头工人问题吗?
    • RabbitMQ 3.2.4,Erlang R16B03

    UPD:

    我必须在消息级别设置TTL,因为我有可变的到期时间依赖于重发的尝试。如何在保证重发的情况下保存当前逻辑?

1 个答案:

答案 0 :(得分:1)

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

当RabbitMQ到达队列的头部时会过期,所以如果你没有消费者,很可能你的消息不会过期。