Hi,
Eventhough I use doTry().. doCatch() blocks to handle the issue that Jens
explained before, the problem is still exists, this is how my route looks
like in which the call never goes to "direct:C" when there is an exception
in sub-route "B":
from("direct:A")
.to("direct:B")
.to("direct:C");
from("direct:B")
.doTry()
.transacted().end()
.code goes that throws an exception
.doCatch(Exception.class)
.handled(true)
.markRollbackOnly()
.end();
from("direct:C")
.....
Claus Ibsen-2 wrote:
>
> On Sun, Dec 6, 2009 at 11:25 PM, trivedi kumar b
> <[email protected]> wrote:
>>
>> Hi,
>>
>> If I use doTry.. doCatch, with similar route that includes transactions,
>> will that work as expected? I mean, markRollbackOnly() option inside
>> doCatch() will rollback the transaction? Pls let me know the behaviour.
>>
>
> Yes markRollbackOnly() is only for transactions and will issue a
> status.setRollbackOnly() on the Spring Transaction underneath.
> That should render the transaction outcome as rollback only.
>
> It will not tamper with the Exchange by setting an exception as
> rollback() does by setting a RollbackException on the Exchange.
>
>
>
>
>
>> Thanks,
>> Trivedi
>>
>>
>> Claus Ibsen-2 wrote:
>>>
>>> On Thu, Dec 3, 2009 at 10:45 AM, kyt <[email protected]> wrote:
>>>>
>>>> Hi,
>>>>
>>>> I need some advice on how to handle an exception in a sub-route and how
>>>> the
>>>> calling route can continue processing. It is easier to explain this
>>>> with
>>>> a
>>>> bit of code:
>>>>
>>>> from("direct:A")
>>>> .to("direct:B")
>>>> .to("direct:C");
>>>>
>>>> from("direct:B")
>>>> .onException(Exception.class).handled(true).end()
>>>> . code that throws an exception
>>>>
>>>> from("direct:C")
>>>> ...
>>>>
>>>> Now, if there is an exception in direct:B, direct:C never gets called.
>>>> Through debugging I found out that the pipeline in direct:A stops
>>>> processing
>>>> because it checks an exchange property (Exchange.ERRORHANDLER_HANDLED).
>>>> I'm
>>>> using Camel 2.0. Is there a way that the processing in direct:A
>>>> continues
>>>> after the exception was handled in direct:B?
>>>>
>>>
>>> Unfortunately the logic for error handling got a bit complex.
>>> Something to improve in 2.2. I am currently making the TX based
>>> simpler in internal logic.
>>>
>>> Back to your use case.
>>> The doTry .. doCatch will work as regular try .. catch and thus what
>>> you would expect so route A will continue
>>>
>>> In terms on onException we should improve this over time, adding some
>>> flag to indicate what you want. As some want to use onException to
>>> catch that error and create a custom error messages as reply and thus
>>> not process and further. And others as you want a kinda try .. catch
>>> logic and just ignore the damn exception.
>>>
>>>
>>>> Thanks,
>>>> Jens
>>>> --
>>>> View this message in context:
>>>> http://old.nabble.com/handled-exception-in-sub-route-tp26623326p26623326.html
>>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> Claus Ibsen
>>> Apache Camel Committer
>>>
>>> Author of Camel in Action: http://www.manning.com/ibsen/
>>> Open Source Integration: http://fusesource.com
>>> Blog: http://davsclaus.blogspot.com/
>>> Twitter: http://twitter.com/davsclaus
>>>
>>>
>>
>> --
>> View this message in context:
>> http://old.nabble.com/handled-exception-in-sub-route-tp26623326p26669550.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>
>>
>
>
>
> --
> Claus Ibsen
> Apache Camel Committer
>
> Author of Camel in Action: http://www.manning.com/ibsen/
> Open Source Integration: http://fusesource.com
> Blog: http://davsclaus.blogspot.com/
> Twitter: http://twitter.com/davsclaus
>
>
--
View this message in context:
http://old.nabble.com/handled-exception-in-sub-route-tp26623326p26676468.html
Sent from the Camel - Users mailing list archive at Nabble.com.