Gentilissimo Signore was kind enough to answer my question on Twitter. The problem is that if your dead letter exchange is setup as DIRECT you must specify a dead letter routing key. If you just want all your NACKed message to go into a dead letter bucket for later investigation (as I do) then your dead letter exchange should be setup as a FANOUT.
Here are the updated steps that work:
- Create new FANOUT exchange with the name “dead.letter.test”
- Create new queue “dead.letter.queue”
- Bind “dead.letter.queue” to “dead.letter.test”
- Create new queue “test1” with the dead letter exchange set to “dead.letter.test”
- Send a message into “test1”
- Nack (with requeue = false) the message in “test1”