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 = Eandx-message-ttl = 5000), bound toDLEwith 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?
