To use a Python expression use the following Java code
In the sample below we use Python 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:
ScriptContextis pre-configured with the following attributes all set at
The Camel Context.
The Camel Context (cannot be used in groovy).
The current Exchange.
Camel 2.9: Function with a
See Scripting Languages for the list of languages with explicit DSL support.
Passing Additional Arguments to the
Available from Camel 2.8
You can provide additional arguments to the
ScriptingEngine using a header on the Camel message with the key
Using Properties Function
Available from 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, whose key is taken from a header named
From Camel 2.9: you can now use the properties function and the same example is simpler:
Loading Script From External Resource
Available from Camel 2.11
You can externalize the script and have Camel load it from a resource such as
http:. This is done using the following syntax:
resource:scheme:location e.g. to refer to a file on the classpath you can do:
How to Get the Result from Multiple Statements Script
Available from Camel 2.14
The script engine's eval method returns a
null when it runs a multi-statement script. However, Camel can look up the value of a script's result by using the key
result from the value set. When writing a multi-statement script set the value of the
result variable as the script return value.
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).