Details
Description
Setup
- setMaximumRedeliveries(0)
- Throw RuntimeException (Poison ACK) in consumer directly after receiving message
Scenario
- Move message from DLQ to original input queue (either web console or JMX retryMessages)
- Processing of message fails again directly
- The message is considered to be still on the DLQ on the rejection and ActiveMQ logs "Not adding duplicate to DLQ"
Introducing a delay before throwing the exception in the client will get around the issue.
I initially noticed the issue when using an AMQP reject (Apache Qpid Proton) after which I reproduced similar conditions (instant poison ACK) it with the JMS client. The attached Java app will reproduce the issue on 5.14.5 and 5.15.2.
Might be related to AMQ-5752.
2017-10-24 13:38:11,275 | DEBUG | Not adding duplicate to DLQ: ID:xxx-32848-1508845049112-6:1:1:1:1, dest: queue://TEST | org.apache.activemq.broker.region.policy.AbstractDeadLetterStrategy | ActiveMQ Transport: tcp:///127.0.0.1:36360@61616