重新发送来自RabbitMQ的消息很奇怪

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

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

消费者收听QueueAction。

逻辑

  1. 消息被插入到队列QueueWait中,并具有variables到期时间
  2. 过期后,消息从QueueWait移动到QueueAction
  3. 消费者收听QueueAction得到消息

问题

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

环境

  • docker的形象 – 可能是docker问题?
  • RabbitMQ 3.2.4,Erlang R16B03

UPD:

我必须在消息级别上设置TTL,因为我有variables到期依赖于重新发送的尝试。 我将如何能够保证当前逻辑与保证重发?

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

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