A JMS message fails in the route exchange flow, and consequently, the JMS transaction is rolled back, which triggers the ActiveMQ redelivery policy.
When message redelivery attempts exceed maximumRedeliveries (six times by default), the pending message should be sent to the Dead Letter Queue, but this doesn't happen.
Cause
The original undelivered message is non-persistent, but by default, only undelivered persistent messages are sent to DLQ.
Resolution
Send persistent messages to ensure that they end up in DLQ if they can't be delivered. See the Apache ActiveMQ Message Redelivery and DLQ Handling page for more information.