Am just trying to understand the nature of multicast EIP and its further
processing down.
I have a route as follows
@Override
public void configure() throws Exception {
from("jetty:http://0.0.0.0:8081/testagg?httpMethodRestrict=GET")
.convertBodyTo(String.class)
.multicast(stringConcatStrategy).parallelProcessing(true).to("direct:a","direct:b")
.log("MultiCast Completed body = ${body}")
.setBody(constant("data3"))
.log("After setting new body => ${body}")
.transform(constant("data4"))
.end();
from("direct:a")
.transform(simple("data1")) // instead you can have http
client call here
.delayer(5000)
.end();
from("direct:b")
.transform(simple("data2")) // instead you can have http
client call here
.end();
}
I poked the flow using an http client and I see the following log
being printed even before the http call returns.
2020-07-03 14:31:40.291 INFO 363488 --- [#10 - Multicast] route1
: MultiCast Completed body =
2020-07-03 14:31:40.291 INFO 363488 --- [ #5 - Multicast] route1
: After setting new body =>
And strangely, the response received by http client is as follows
=> data1data2data3data4
Am just trying to understand how the flow works. Isn't the 2 logs supposed
to be printed after the multicast aggregator is finished executing? And how
come setBody and Transform EIP isn't replacing the output from the
aggregator "stringConcatStrategy"?
Am using camel v 2.24.0 for this experiment.
Cheers
Reji Mathews