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