blob: 0a307ad45c28e9d6d4743c24dbff57a011361583 [file] [log] [blame]
[[HowdoIsettheMEPwheninteractingwithJBI-HowdoIsettheMEPwheninteractingwithJBI]]
= How do I set the MEP when interacting with JBI?
[[HowdoIsettheMEPwheninteractingwithJBI-Problem]]
== 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:
[source,java]
----
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
http://servicemix.apache.org/servicemix-saxon.html[servicemix-saxon xslt endpoint],
that really expects an InOut MEP. This would break the Camel
route above.
[[HowdoIsettheMEPwheninteractingwithJBI-Solution]]
== 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.
[source,java]
----
from("timer://foo").to("jbi:endpoint:urn:translator:endpoint?mep=in-out").to("log:test"); //...BUT THIS WILL
----