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.

  • Why does docker “--filter ancestor=imageName” find the wrong container?
  • Docker copy file from container to host with file permissions & ownership intact
  • Amazon ECS troobleshooting task start failures
  • Docker container unable to resolve localhost
  • Clarify docker-tag and docker-push command
  • Passing multiple env files in docker run command
  • 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?

  • Run a Docker image as a command line utility in Windows?
  • How to make communication between two docker containers running on two different hosts?
  • Docker Volumes mounting issue
  • Mount volume not working in docker
  • Trouble connecting to an MSSQL server using ASP.NET 5, Docker, and Ubuntu
  • Docker - Not able to telnet Linked Container
  • 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.