Mustache
Available as of Camel
...
2.12
...
The
...
mustache:
...
component
...
allows
...
for
...
processing
...
a
...
message
...
using
...
a
...
...
template.
...
This
...
can
...
be
...
ideal
...
when
...
using
...
...
to
...
generate
...
responses
...
for
...
requests.
...
Maven
...
users
...
will
...
need
...
to
...
add
...
the
...
following
...
dependency
...
to
...
their
...
pom.xml
...
for
...
this
...
component:
Code Block | ||||
---|---|---|---|---|
| ||||
{code:xml}
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-mustache</artifactId>
<version>x.x.x</version> <!-- use the same version as your Camel core version -->
</dependency>
|
URI format
Code Block |
---|
{code} h3. URI format {code} mustache:templateName[?options] {code} Where *templateName* is the |
Where templateName is the classpath-local
...
URI
...
of
...
the
...
template
...
to
...
invoke;
...
or
...
the
...
complete
...
URL
...
of
...
the
...
remote
...
template
...
(eg:
...
file://folder/myfile.mustache).
...
You
...
can
...
append
...
query
...
options
...
to
...
the
...
URI
...
in
...
the
...
following
...
format,
...
?option=value&option=value&...
Options
Wiki Markup |
---|
}} h3. Options {div:class=confluenceTableSmall} || Option || Default || Description || | {{encoding}} | {{null}} | Character encoding of the resource content. | | {{startDelimiter}} | {{ | Characters used to mark template code beginning. | | {{endDelimiter}} | }} | Characters used to mark template code end. | {div} h3. |
Mustache
...
Context
...
Camel
...
will
...
provide
...
exchange
...
information
...
in
...
the
...
Mustache
...
context
...
(just
...
a
...
Map
...
).
...
The
...
Exchange
...
is
...
transferred
...
as:
Wiki Markup |
---|
{div:class=confluenceTableSmall} || key || value || | {{exchange}} | The {{Exchange}} itself. | | {{exchange.properties}} | The {{Exchange}} properties. | | {{headers}} | The headers of the In message. | | {{camelContext}} | The Camel Context. | | {{request}} | The In message. | | {{body}} | The In message body. | | {{response}} | The Out message (only for InOut message exchange pattern). | {div} h3. |
Dynamic
...
templates
...
Camel
...
provides
...
two
...
headers
...
by
...
which
...
you
...
can
...
define
...
a
...
different
...
resource
...
location
...
for
...
a
...
template
...
or
...
the
...
template
...
content
...
itself.
...
If
...
any
...
of
...
these
...
headers
...
is
...
set
...
then
...
Camel
...
uses
...
this
...
over
...
the
...
endpoint
...
configured
...
resource.
...
This
...
allows
...
you
...
to
...
provide
...
a
...
dynamic
...
template
...
at
...
runtime.
Wiki Markup |
---|
{div:class=confluenceTableSmall} || Header || Type || Description || Support Version || | MustacheConstants.MUSTACHE_RESOURCE_URI | String | A URI for the template resource to use instead of the endpoint configured. | | | MustacheConstants.MUSTACHE_TEMPLATE | String | The template to use instead of the endpoint configured. | | {div} h3. Samples For example you could use something like: {code} |
Samples
For example you could use something like:
Code Block |
---|
from("activemq:My.Queue").
to("mustache:com/acme/MyResponse.mustache");
{code}
|
To
...
use
...
a
...
Mustache
...
template
...
to
...
formulate
...
a
...
response
...
for
...
a
...
message
...
for
...
InOut
...
message
...
exchanges
...
(where
...
there
...
is
...
a
...
JMSReplyTo
...
header).
...
If
...
you
...
want
...
to
...
use
...
InOnly
...
and
...
consume
...
the
...
message
...
and
...
send
...
it
...
to
...
another
...
destination
...
you
...
could
...
use:
Code Block |
---|
} from("activemq:My.Queue"). to("mustache:com/acme/MyResponse.mustache"). to("activemq:Another.Queue"); {code} |
It's
...
possible
...
to
...
specify
...
what
...
template
...
the
...
component
...
should
...
use
...
dynamically
...
via
...
a
...
header,
...
so
...
for
...
example:
Code Block |
---|
}
from("direct:in").
setHeader(MustacheConstants.MUSTACHE_RESOURCE_URI).constant("path/to/my/template.mustache").
to("mustache:dummy");
|
The Email Sample
In this sample we want to use Mustache templating for an order confirmation email. The email template is laid out in Mustache as:
Code Block |
---|
{code} h3. The Email Sample In this sample we want to use Mustache templating for an order confirmation email. The email template is laid out in Mustache as: {code} Dear {{headers.lastName}}}, {{headers.firstName}} Thanks for the order of {{headers.item}}. Regards Camel Riders Bookstore {{body}} {code} {include:Endpoint See Also} |
Include Page | ||||
---|---|---|---|---|
|