ScriptContext
The JSR-223 scripting languages ScriptContext is pre configured with the following attributes all set at ENGINE_SCOPE
:
Attribute | Type | Value |
---|---|---|
context |
| The Camel Context ( It cannot be used in groovy) |
camelContext |
| The Camel Context |
exchange |
| The current Exchange |
request |
| The IN message |
response |
| The OUT message |
properties |
| 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 CamelScriptArguments
.
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".
.setHeader("myHeader").groovy("context.resolvePropertyPlaceholders('{{' + request.headers.get('foo') + '}}')")
From Camel 2.9 onwards you can now use the properties function and the same example is simpler:
.setHeader("myHeader").groovy("properties.resolve(request.headers.get('foo'))")
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:
.setHeader("myHeader").groovy("resource:classpath:mygroovy.groovy")
Dependencies
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).
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-script</artifactId> <version>x.x.x</version> </dependency>