If you want to send messages to multiple destinations, you should
use multicast(a, b, c)  instead of to(a, b, c).  The latest means that the
output of a will be sent to b, the output of b to c and the output of c back
to the consumer.  This is equivalent to to(a).to(b).to(c)

On 9/18/07, Martin Novák <[EMAIL PROTECTED]> wrote:
>
> Hello, I have a quite basic problem which I cannot solve. The thing is
> that I want to send message to couple of services. These services should
> be invoked from multiple threads because the processing will take quite
> some time. Then I want to gather, and aggregate the output of the
> services somehow nicely, and return it to the calling point.
>
> I was trying to use seda with combination with aggregator, which worked
> up to the point that it returned just the first message to the user -
> before aggregator was able to process the rest. I know that the whole
> service is asynchronous by my design, but it would be nice to know how
> to gather the results back...
>
> there is an excerpt from my code - just an illustation:
>
> from("direct:a").setHeader("splitCount", new Expression() {
> public Object evaluate(Exchange exchange) {
>    return 2;
> }}).to("seda:b", "seda:c");
> from("seda:b").process(new HeaderSetter("msgCounter",
> 0)).process(traceProcessor).to("ret:xxx").to("seda:z");
> from("seda:c").process(new HeaderSetter("msgCounter",
> 1)).process(traceProcessor).to("ret:xxx").to("seda:z");
> from("seda:z").aggregator(header("msgId"),
> aggregationStrategy).to("return:a");
>
> Exchange exchange = new DefaultExchange(ctx);
> exchange.getIn().setBody("<result" + ii + " />");
> exchange.getIn().setHeader("msgId", "ahojValue" + ii);
> exchange = template.send("direct:a", exchange);
> Object body = exchange.getOut().getBody();
>
> can somebody advice me what to do please?
> thanks,
> Martin
>



-- 
Cheers,
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/

Reply via email to