[
https://issues.apache.org/jira/browse/CAMEL-9555?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen resolved CAMEL-9555.
--------------------------------
Resolution: Fixed
Assignee: Claus Ibsen
Fix Version/s: 2.17.0
2.16.3
2.15.6
Thanks for reporting.
> 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)