How to use a dynamic URI in to()
A dynamic URI is an endpoint URI that varies depending on inflight routing information, such as Exchange properties, message headers, the body, the Camel Context, etc.
For example, if you’re using a Freemarker producer and the template location is provided inside the current message, you might expect the following code to work, but it will not.
|
This is not valid code This snippet is not valid code. Read on. |
.to("freemarker://templateHome/${body.templateName}.ftl")
In this case, you must use an EIP (Enterprise Integration Pattern) that is capable of computing a dynamic URI using an Expression, such as the ToD or Recipient List EIP pattern.
|
This is valid code This snippet is valid code. |
To fix the above problem we can use either toD or recipientList. Using toD is easier as shown below:
.toD("freemarker://templateHome/${body.templateName}.ftl")
When using recipient list:
.recipientList(simple("freemarker://templateHome/${body.templateName}.ftl"))