Here's what we have here:
- Topic Exchange
DLE
, which is intended to be a Dead-Letter Exchange - Topic Exchange
E
, which is the "main" Exchange - Several Queues (
EQ1
, ...,EQn
) bound toE
(and initialized withx-dead-letter-exchange = DLE
), each with own Routing Key. These queues are the ones being consumed from. - For each
EQn
, there's aDLEQn
(initialized withx-dead-letter-exchange = E
andx-message-ttl = 5000
), bound toDLE
with the same routing key asEQn
. These queues are not being consumed from
What I want is the following: if a consumer cannot process a message from EQn
, it Nacks the message with requeue: false
and it gets to the DLEQn
- that is, to an appropriate queue on the Dead-Letter Exchange. Now, I want this message to sit on the DLEQn
for some time and then get routed back to the original queue EQn
to be processed again.
Try as I might, I could not get the "redelivery to the original queue" working. I see that messages sit in the DLEQn
with all the right headers and Routing Key intact, but after TTL expires they just vanish into thin air.
What am I doing wrong here?