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.
- Message is inserted into queue QueueWait with variable expiration time
- After expiration message is moved from QueueWait to QueueAction
- Consumer listening QueueAction got message
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
- Image of docker – May be it is docker problem?
- RabbitMQ 3.2.4, Erlang R16B03
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?
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.