<dependency>
<groupId>org.apache.tamaya.ext</groupId>
<artifactId>tamaya-camel_beta</artifactId>
<version>0.5-incubating-SNAPSHOT</version>
</dependency>
2019-11-17
Tamaya Camel is an extension module. Refer to the extensions documentation for further details.
The Tamaya Camel module provides different artifacts which allow integration of Apache Tamaya configuration with Apache Camel.
The module is based on Java 8.
To benefit from configuration builder support you only must add the corresponding dependency to your module:
<dependency>
<groupId>org.apache.tamaya.ext</groupId>
<artifactId>tamaya-camel_beta</artifactId>
<version>0.5-incubating-SNAPSHOT</version>
</dependency>
Tamaya Camel comes basically with three artifacts:
A Camel ResolverFunction implementation adding explicit property resolution (org.apache.tamaya.camel.TamayaPropertyResolver).
A Camel PropertiesComponent implementation, which allows implicitly preconfigures the resolvers from above and additionally allows using Tamaya configuration as Camel overrides (org.apache.tamaya.camel.TamayaPropertiesComponent).
Camel integration using Java DSL is basically simple:
import org.apache.tamaya.camel.TamayaPropertiesComponent;
camelContext.addComponent("properties", new TamayaPropertiesComponent());
Given so you can then use cfg or tamaya as prefix for resolving entries with Tamaya as follows:
RouteBuilder builder = new RouteBuilder() {
public void configure() {
from("direct:hello1").transform().simple("{{cfg:message}}");
}
};
camelContext.addRoutes(builder);
builder = new RouteBuilder() {
public void configure() {
from("direct:hello2").transform().simple("{{tamaya:message}}");
}
};
camelContext.addRoutes(builder);
Optionally you can also configure TamayaPropertiesComponent that all currently known Tamaya properties are used as Camel overrides, meaning they are evaluated prior to all other available resolver functions in the Camel PropertiesComponent:
TamayaPropertiesComponent props = new TamayaPropertiesComponent();
props.setTamayaOverrides(true);
Camel integration using XML DSL is basically very similar. You just have to add the properties component as bean as well. All other configuration parameters (e.g. file URIs are similar supported). In the example code below we again use Tamaya as the main configuration solutions only using Camel’s default behaviour as a fallback:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
">
<routeContext id="myCoolRoutes" xmlns="http://camel.apache.org/schema/spring">
<route id="r1">
<from uri="direct:hello1"/>
<transform>
<simple>{{message}}</simple>
</transform>
</route>
<route id="r2">
<from uri="direct:hello2"/>
<transform>
<simple>{{cfg:message}}</simple>
</transform>
</route>
<route id="r3">
<from uri="direct:hello3"/>
<transform>
<simple>{{tamaya:message}}</simple>
</transform>
</route>
</routeContext>
<bean id="properties" class="org.apache.tamaya.camel.TamayaPropertiesComponent">
<property name="tamayaOverrides" value="true"/>
</bean>
</beans>