camel-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Laurent Chiarello (JIRA)" <>
Subject [jira] [Created] (CAMEL-9555) Setting deadLetterHandleNewException to false breaks DeadLetterChannel default exception handling
Date Mon, 01 Feb 2016 10:38:39 GMT
Laurent Chiarello created CAMEL-9555:

             Summary: Setting deadLetterHandleNewException to false breaks DeadLetterChannel
default exception handling
                 Key: CAMEL-9555
             Project: Camel
          Issue Type: Bug
          Components: camel-core
            Reporter: Laurent Chiarello

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

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

View raw message