camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Claus Ibsen <claus.ib...@gmail.com>
Subject Re: stopping a route in spring dsl
Date Fri, 01 May 2009 05:56:07 GMT
On Thu, Apr 30, 2009 at 10:13 PM, jburkhardt <jasonburkhardt@yahoo.com> wrote:
>
> I've looked around JIRA and it seems using stop in spring dsl used to be an
> issue but has been resolved since Feb 09.  Perhaps I am attempting to use it
> incorrectly.
> I am using Camel 2.0 M1
>
> Here's what I'm trying to do:
> I have a route that receives messages from a JMS queue.
> After receiving the message it is run through a splitter, each "sub-message"
> for lack of a better term, gets run through a validation process and a
> security process.  The results are then aggregated back together and
> continue on the route.
>
> Here is what I'm doing now in my spring dsl:
> <camel:route>
>  <camel:from
> uri="jmsBean:queue:IncomingQueue?exchangePattern=InOut?disableReplyTo=true"/>
>  <camel:split strategyRef="myAggregationStrategyBean">
>    <xpath>//myxpath</xpath>
>    <camel:process ref="validationProcessor"/>
>    <camel:process ref="securityProcessor"/>
>  </camel:split>
> .
> .
> .
> </camel:route>
>
> Right now this works okay - I set an exception on the exchange in the
> validation or security process if it fails, and it does not get past the
> split.
> My issue is if it fails the validation process, I don't want it to even
> bother going to the security process, let alone to the aggregator after
> that.  Likewise if it fails security I don't want the aggregator to be
> called.
> Is this something that is possible?  Or is there some better way to
> accomplish what I am trying to do?

Take a look at the filter EIP. It can drop unwanted messages.
http://camel.apache.org/message-filter.html

And should be what your are looking for.


>
> I have tried defining an interceptor like this:
> <camel:intercept>
>  <camel:when>
>    <simple>${exception.message} != null</simple>
>  </camel:when>
>  <camel:stop/>
> </camel:intercept>
>
> Hoping that the interceptor would pick when I had set an exception on the
> exchange and stop the route.  This doesn't seem to have any effect.  The
> aggregator is still called every time.

Yeah the intercept is really for incoming messages, should have had a
better name IMHO.
I recently blogged about it and updated the wiki about interceptors in Camel:
http://camel.apache.org/intercept.html



>
> Any help, especially if I am trying to do something completely the wrong
> way, would be much appreciated.
> Thanks,
> Jason
> --
> View this message in context: http://www.nabble.com/stopping-a-route-in-spring-dsl-tp23322604p23322604.html
> Sent from the Camel - Users (activemq) mailing list archive at Nabble.com.
>
>



-- 
Claus Ibsen
Apache Camel Committer

Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus
Apache Camel Reference Card:
http://refcardz.dzone.com/refcardz/enterprise-integration

Mime
View raw message