How do I set the MEP when interacting with JBI?
Problem
If you are using the Camel JBI integration to send a MessageExchange
to another JBI component from within your Camel route, Camel uses the MEP of the underlying Camel Exchange to determine the MEP of the JBI MessageExchange
. An example:
from(""timer://foo").to("jbi:endpoint:urn:translator:endpoint").to("log:test"); //THIS WON'T WORK...
If the timer endpoint that starts the route sends a Camel exchange with an in-only MEP, the MEP for interacting with JBI will also be InOnly. Now imagine that the target JBI endpoint is in fact a servicemix-saxon xslt endpoint, that really expects an InOut MEP. This would break the Camel route above.
Solution
For this case, you can override the MEP used from the Camel route like this, making sure that a JBI InOut MessageExchange
is being used to interact with the "urn:translation:endpoint"
endpoint.
from("timer://foo").to("jbi:endpoint:urn:translator:endpoint?mep=in-out").to("log:test"); //...BUT THIS WILL