On Thu, Mar 5, 2009 at 10:25 AM, ee7arh <andrew.hu...@2e-systems.com> wrote:
>
> Hi,
>
> When I tryto use the functions "splitter()" or "multicast()" in my DSL
> within a "choice()" block, I am not able to have another "when()" or even an
> "otherwise()"
>
> Predicate isInvitation
>        = PredicateBuilder.regex(header("event_type"), "invitation");
>
> Predicate isReply
>        = PredicateBuilder.regex(header("event_type"), "reply");
>
> from("jms:queue:myQueue")
> .choice()
>    .when(isInvitation)
>        .to("bean:eventMarshaller?methodName=unmarshallTriggerInvites")
>        .splitter(body()) // This line causes a compilcation problem on the
> next when() or otherwise()
>        .to("jms:queue:unmarshalledEventsQueue"))
>    .when(isFlightUpdate)
>
> If I take out the splitter() line above, all works fine and I can have as
> many when() statements as I like. Is there a reason why this doesn't work?
Yeah the compiler can not follow you :) When you mix like that in some
situations you get to a hold.

The solution is to split your route in sub routes. So keep one route
for the overall choice
And then sub routes for the splitter

You can use "direct:xxx" endpoints to connect them in sync fashion
and use "seda:xxx" for async fashion.


>
> Thanks
> Andrew
>
>
> --
> View this message in context: 
> http://www.nabble.com/DSL-Content-Router-interrupted-with-splitter%28%29-or-multicast%28%29-tp22347983p22347983.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>



-- 
Claus Ibsen
Apache Camel Committer

Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/

Reply via email to