When using a DeadLetterChannel, the messages are stored in memory between the retries (redeliveries). They are flushed from the memory only when we get the maximumRedeliveries value.
It means that we can have an important memory consumption, because the messages are memory resident for a long time when:
- if we have an important maximumRedeliveries, especially if we have -1
- if we have an important redeliveryDelay
I propose to create a PersistentDeadLetterChannel, working like the DeadLetterChannel, but, between redeliveries, the messages are flushed to a persistent store (filesystem, JMQ queue, JDBC, ...).