Camel allows Mvel to be used as an Expression or Predicate the DSL or Xml Configuration.
You could use Mvel to create an Predicate in a Message Filter or as an Expression for a Recipient List
You can use Mvel dot notation to invoke operations. If you for instance have a body that contains a POJO that has a getFamiliyName method then you can construct the syntax as follows:
| Variable || Type || Description |
| this || Exchange || the Exchange is the root object |
| exchange || Exchange || the Exchange object |
| exception || Throwable || the Exchange exception (if any) |
| exchangeId || String || the exchange id |
| fault || Message || the Fault message (if any) |
| request || Message || the exchange.in message |
| response || Message || the exchange.out message (if any) |
| properties || Map || the exchange properties |
| property(name) || Object || the property by the given name |
| property(name, type) || Type || the property by the given name as the given type |
For example you could use Mvel inside a Message Filter in XML
<mvel>request.headers.foo == 'bar'</mvel>
And the sample using Java DSL:
from("seda:foo").filter().mvel("request.headers.foo == 'bar'").to("seda:bar");
Loading script from external resource
Available as of Camel 2.11
You can externalize the script and have Camel load it from a resource such as "classpath:", "file:", or "http:".
This is done using the following syntax: "resource:scheme:location", eg to refer to a file on the classpath you can do:
To use Mvel in your camel routes you need to add the a dependency on camel-mvel which implements the Mvel language.
If you use maven you could just add the following to your pom.xml, substituting the version number for the latest & greatest release (see the download page for the latest versions).
Otherwise, you'll also need MVEL