camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jon Anstey <jans...@gmail.com>
Subject Re: How to break from routing slip in camel on exception?
Date Tue, 01 Dec 2009 19:21:39 GMT
FYI I've fixed this on the trunk here
http://svn.apache.org/viewvc?rev=885876&view=rev

On Tue, Dec 1, 2009 at 3:39 PM, Jon Anstey <janstey@gmail.com> wrote:

> Just took a look into this and found that setting the Exception on the
> Exchange doesn't really break you out of the routing slip as you want. I'm
> gonna fix that up on the trunk. But, throwing an Exception from a recipient
> does stop the routing slip. See this test case for an example
> http://svn.apache.org/repos/asf/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/routingslip/RoutingSlipWithExceptionTest.java
>
>
> On Tue, Dec 1, 2009 at 1:34 PM, murugess <msanjay@gmail.com> wrote:
>
>>
>> We are using camel binding component, with camel version 1.6.1.0, on
>> servicemix for our project. We are leveraging dynamic routing slip in
>> camel
>> to process our request and are facing issues related to exception
>> handling.
>> We have already defined global errorHandler which handles any exception
>> that
>> occurs in any of the route. Now, whenever an exception occurs in any of
>> the
>> endpoints within routing slip, exception handler is called as expected but
>> then once the exceptionHandler route is finished, control comes back to
>> the
>> routingslip and rest of the endpoints get executed. No matter what we set
>> on
>> exception route ( such as handled=false), all the endpoints in routing
>> slip
>> eventually gets called. Here is the code snippet from RoutingSlip :
>>
>>
>>  for (String nextRecipient : recipients) {
>>            Endpoint<Exchange> endpoint = resolveEndpoint(exchange,
>> nextRecipient);
>>            Producer<Exchange> producer =
>> producerCache.getProducer(endpoint);
>>            Exchange ex = current.newInstance();
>>
>>            updateRoutingSlip(current);
>>            copyOutToIn(ex, current);
>>
>>            producer.process(ex);
>>
>>            current = ex;
>>        }
>>
>>
>>
>>    We don't see any provision to break from the above loop. Right now, the
>> work around we have adopted is to set EXCEPTION_HANDLED_PROPERTY on the
>> exchange so that the pipeline class does not delegate the request to the
>> actual endpoint. But there is still an overhead of pipeline being called
>> for
>> all the endpoints configured within the routing slip.
>>
>>    Any suggestions are welcome.
>> --
>> View this message in context:
>> http://old.nabble.com/How-to-break-from-routing-slip-in-camel-on-exception--tp26594251p26594251.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>
>>
>
>
> --
> Cheers,
> Jon
>
> Camel in Action: http://manning.com/ibsen
> Blog: http://janstey.blogspot.com
>



-- 
Cheers,
Jon

Camel in Action: http://manning.com/ibsen
Blog: http://janstey.blogspot.com

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message