To use a Ruby expression use the following Java code
In the sample below we use Ruby to create a Predicate use in the route path, to route exchanges from admin users to a special queue.
And a Spring DSL sample as well:
The JSR-223 scripting languages ScriptContext is pre configured with the following attributes all set at
The Camel Context ( It cannot be used in groovy)
The Camel Context
The current Exchange
The IN message
The OUT message
Camel 2.9: Function with a
See Scripting Languages for the list of languages with explicit DSL support.
Additional arguments to ScriptingEngine
Available as of Camel 2.8
You can provide additional arguments to the
ScriptingEngine using a header on the Camel message with the key
See this example:
Using properties function
Available as of Camel 2.9
If you need to use the Properties component from a script to lookup property placeholders, then its a bit cumbersome to do so.
For example to set a header name myHeader with a value from a property placeholder, which key is provided in a header named "foo".
From Camel 2.9 onwards you can now use the properties function and the same example is simpler:
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
This is done using the following syntax:
"resource:scheme:location", eg to refer to a file on the classpath you can do:
To use scripting languages in your camel routes you need to add the a dependency on camel-script which integrates the JSR-223 scripting engine.
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).