You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Claus Ibsen <cl...@gmail.com> on 2009/03/10 08:33:10 UTC
Re: Simple split / aggregate scenario - help me understand what's
wrong
Hi
Could you check this related topic?
http://www.nabble.com/routing-like-%22jetty-splitter-aggregator-reply%22-request-response-problem-td22374696s22882.html
On Sun, Mar 8, 2009 at 1:35 PM, Tomasz Domzal
<ca...@rej.tomasz.domzal.pl> wrote:
> Hi,
>
> Simple test case. Please tell me why splitting and
> aggregating doesn't work I would expect it would ?
> Maybe my understanding of split/aggregate is wrong ?
> DSL route:
>
> from("direct:start")
> .splitter(body().tokenize(","), false)
> .aggregator(header("type"), joinBodyWithColon).batchTimeout(500)
> .to("mock:stop");
>
> where joinBodyWithColon aggregation strategy just joins
> messsages bodies with colon separator:
>
> private final AggregationStrategy joinBodyWithColon = new AggregationStrategy() {
> public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
> oldExchange.getIn().setBody(
> oldExchange.getIn().getBody(String.class)+
> ":"+
> newExchange.getIn().getBody(String.class));
> return oldExchange;
> }
> };
>
>
> after sending
>
> template.sendBodyAndHeader(
> "direct:start", ExchangePattern.InOnly,
> "red,green,blue",
> "type", "sometype");
>
> endpoint "mock:stop" receives 1 message with body "red,green,blue"
> while in my opinion it should receive 1 message with body "red:gree:blue".
>
> BTW. When I insert direct endpoint between split end aggregate
> elements - it works as expected.
> Below route passes "red:green:blue" to mock endpoint:
>
> from("direct:start")
> .splitter(body().tokenize(","), false)
> .to("direct:foo");
>
> from("direct:foo")
> .aggregator(header("type"), joinBodyWithColon).batchTimeout(500)
> .to("mock:stop");
>
> Thanks in advance
> Tomek
>
>
>
>
>
--
Claus Ibsen
Apache Camel Committer
Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/