Hi all,
I'm having a situation in which I need the Pipeline EIP, i.e. to convert an inbound InOnly MEP message into an InOut MEP message, and then route the result out again as an InOnly MEP message. The service-eip Pipeline component seems to be what I'm looking for.
After setting up the configuration, see below, I get some unexpected behavior:
The transformer component (a servicemix-bean instance, called wsCaller below) actually receives TWO messages after each other:
1) (Correct and expected) An InOut message with the inbound message as received from the NMR and the "out" part being empty.
2) (Incorrect (?) and unexpected) An InOut message as above, though with the "out" part being the same as output from the above (1) call. Could anyone explain this rather strange behavior? Something I've misunderstood?
xbean.xml configuration follows below:
<eip:pipeline service="esb:pipeline" endpoint="endpoint">
<eip:transformer>
<eip:exchange-target service="esb:wsCaller" />
</eip:transformer>
<eip:target>
<eip:exchange-target service="esb:fileSender" />
</eip:target>
</eip:pipeline>
Regards,
Roger
This is an expected behavior. The reason is that the second message has a DONE status and you usually want to ignore it. You can check that using:
if (exchange.getStatus() == ExchangeStatus.DONE) {
return;
}