| [[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 |
| ---- |