[ https://issues.apache.org/jira/browse/CAMEL-9555?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Laurent Chiarello updated CAMEL-9555: ------------------------------------- Attachment: DeadLetterChannelTest.java Reupload of Test case > Setting deadLetterHandleNewException to false breaks DeadLetterChannel > default exception handling > ------------------------------------------------------------------------------------------------- > > Key: CAMEL-9555 > URL: https://issues.apache.org/jira/browse/CAMEL-9555 > Project: Camel > Issue Type: Bug > Components: camel-core > Reporter: Laurent Chiarello > Assignee: Claus Ibsen > Fix For: 2.15.6, 2.16.3, 2.17.0 > > Attachments: DeadLetterChannelTest.java > > > By default, the {{DeadLetterChannel}} handles every exception, including any > exception thrown by the dead letter itself. This can be changed by setting > the option {{deadLetterHandleNewException}} to _false_. Unfortunately, > setting it to _false_ also disable the handling in case of a normal > exception, which is not at all what the name suggests. > To make the point clear, here is the little scenario I am trying to set up, > and why this option is really important in that case. > h3. Scenario > I have a camel route consuming persistent messages from a JMS (activemq) > endpoint. I have set {{CLIENT_ACKNOWLEDGE}} on the component to prevent > consuming the messages until they have been successfully processed. > So I want to configure my error handler as a {{DeadLetterChannel}} with the > following behavior: > # in case of an exception during processing, send the message to a DLQ > # if the DLQ itself fails (preventing the message to be safely stored), do > not handle it and let the exception being propagated back to the JMS > consumer, such that ActiveMQ won't remove it from its queue. > From my understanding, this is what the option > {{deadLetterHandleNewException=false}} should provide. But when testing it, > setting it to _false_ actually breaks the default handling of the dead letter > channel as well, and no exception at all are handled, even when successfully > sent to the DLQ... > I checked {{DeadLetterHandleNewExceptionTest}} from the camel test cases, but > it does not cover the scenario I described (it only checks the behavior when > the DLQ fails, not when it succeeds). > Basically, in the current release, I can either have: > * the DLC handle *all* exceptions (default) > * the DLC handle *no* exception at all (with > {{deadLetterHandleNewException=false}}) > However, the intended behavior with {{deadLetterHandleNewException=false}} > should have the DLC handle any exception thrown during normal routing, while > not handling any exception thrown during the DLQ processing itself. -- This message was sent by Atlassian JIRA (v6.3.4#6332)