Resend messages from RabbitMQ works strange

I have RabbitMQ cluster in docker images. RabbitMQ have 1 exchange “EventExchange” and 2 queues: “QueueWait” and “QueueAction”. Queues configured for resend:

  • x-dead-letter-exchange: EventExchange
  • x-dead-letter-routing-key: QueueAction
  • durable: true

And consumer listens QueueAction.

  • Can I mount data to host filesystem from docker's VOLUME CREATE?
  • Docker (Dockerfile): Share a directory from host to container
  • Docker 1.12 on Mac issue with DB connection pool
  • docker container port mapping issue
  • How to install gdbserver package on Alpine Docker image?
  • No such file or directory in docker build
  • Logic

    1. Message is inserted into queue QueueWait with variable expiration time
    2. After expiration message is moved from QueueWait to QueueAction
    3. Consumer listening QueueAction got message

    Problem

    Today I had problem. Expired messages are not moved between QueueWait and QueueAction. But if I get all messages from QueueWait in default GUI of RabbitMQ they will be moved to the QueueAction succesfully

    Environment

    • Image of docker – May be it is docker problem?
    • RabbitMQ 3.2.4, Erlang R16B03

    UPD:

    I have to set TTL on the message level, because I have variable expiration dependet on the attempts of resend. How will I able to save current logic with guaranteed resend?

  • Docker ps and other subcommands all hang forever on CentOS 7.2
  • Docker -v paramter limited in size
  • Docker windows loading kernel modules
  • How to test queue worker outage and recovery
  • MAC | Access application deployed on Docker from another application on VirtualBox machine
  • Docker rsyslog driver add message length before actual message
  • One Solution collect form web for “Resend messages from RabbitMQ works strange”

    Take a look at https://www.rabbitmq.com/ttl.html#per-message-ttl-caveats

    RabbitMQ expires messages when they reach the head of the queue, so if you don’t have consumers, most probably your messages won’t get expired.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.