String Template
The string-template:
component allows you to process a message using a String Template. This can be ideal when using Templating to generate responses for requests.
Maven users will need to add the following dependency to their pom.xml
for this component:
...
URI
...
Format
...
Where Where templateName
is the classpath-local URI of the template to invoke; or the complete URL of the remote template.
You can append query options to the URI in the following format, ?option=value&option=value&...
Options
...
...
Option | Default | Description |
---|---|---|
|
| Cache for the resource content when its loaded. |
|
|
...
From Camel 2.11.1 |
...
: configuring the variable start delimiter | |
|
|
...
From Camel 2.11.1 |
...
: configuring the variable end delimiter |
Headers
Camel will store a reference to the resource in the message header with key, org.apache.camel.stringtemplate.resource
. The Resource is an org.springframework.core.io.Resource
object.
Hot
...
-Reloading
The string template resource is by default hot-reloadable for both file and classpath resources (expanded jar). If you set contentCache=true
, Camel loads will load the resource only just once and , disabling hot-reloading is not possible. This scenario can be used in production when the resource never changes.
...
Camel will provide exchange information as attributes (just a java.util.Map
) to the string template. The Exchange is transfered transferred as:
...
...
Key |
---|
...
Value | |
---|---|
| The Exchange itself. |
| The headers of |
...
the | |
| The Camel Context. |
|
...
The |
|
...
The |
|
...
The |
|
...
The |
...
for |
|
...
The |
...
for |
Since From Camel 2.14, : you can define the custom context map by setting the message header "CamelStringTemplateVariableMap" just like the below code.
...
language | java |
---|
header CamelStringTemplateVariableMap
, as shown below:
...
Samples
For example you could use a string template as follows in order to formulate a response to a message:
...
...
The Email Sample
In this sample we want to use a string template to send an order confirmation email. The email template is laid out in StringTemplate
as:
This example works for camel 2.11.0. If your camel version is less than 2.11.0, the variables should be started and ended with $
.
...
...
And the java code is as follows:
...
...
Include Page