Velocity

JVM since1.1.0 Native since1.2.0

Transform messages using a Velocity template.

What’s inside

Please refer to the above link for usage and configuration details.

Maven coordinates

<dependency>
    <groupId>org.apache.camel.quarkus</groupId>
    <artifactId>camel-quarkus-velocity</artifactId>
</dependency>

Check the User guide for more information about writing Camel Quarkus applications.

Camel Quarkus limitations

If property allowContextMapAll is set to true there is a limitation in native mode. Reflective calls to methods of several classes in camel are not allowed (for example org.apache.camel.support.DefaultExchange). Therefore some expressions won’t work (for example `${exchange.properties.*}).

You can allow reflective calls to such classes (for example by using application.properties), but keep in mind that it brings some security risks.

Additional Camel Quarkus configuration

Beyond standard usages described above, a trick is needed when using velocity templates from classpath resources in native mode. In such a situation, one needs to explicitly embed the resources in the native executable by specifying the include-patterns option.

For instance, the route below would load the velocity template from a classpath resource named template/simple.vm:

from("direct:start").to("velocity://template/simple.vm");

In order to work in native mode the include-patterns configuration should be set. For instance, in the application.properties file as below :

quarkus.camel.native.resources.include-patterns = template/*.vm

More information about selecting resources for inclusion in the native executable could be found at Embedding resource in native executable.