Since we're on a major migration process of this website, some component documents here are out of sync right now. In the meantime you may want to look at the early version of the new website
https://camel.apache.org/staging/
We would very much like to receive any feedback on the new site, please join the discussion on the Camel user mailing list.
Infinispan ComponentAvailable as of Camel 2.13.0 This component allows you to interact with Infinispan distributed data grid / cache. Infinispan is an extremely scalable, highly available key/value data store and data grid platform written in Java. From Camel 2.17 onwards Infinispan requires Java 8. Maven users will need to add the following dependency to their <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-infinispan</artifactId> <version>x.x.x</version> <!-- use the same version as your Camel core version --> </dependency> URI formatinfinispan://cacheName?[options] URI syntax change The URI syntax has changed since camel 2.19.0, for previous camel versions the URI format is: infinispan://hostName?[options] URI OptionsThe producer allows sending messages to a local infinispan cache configured in the registry, or to a remote cache using the HotRod protocol.
Message Headers
ExampleBelow is an example route that retrieves a value from the cache for a specific key: from("direct:start") .setHeader(InfinispanConstants.OPERATION, constant(InfinispanConstants.GET)) .setHeader(InfinispanConstants.KEY, constant("123")) .to("infinispan?cacheContainer=#cacheContainer"); Using the Infinispan based idempotent repositoryIn this section we will use the Infinispan based idempotent repository. First, we need to create a cacheManager and then configure our org.apache.camel.component.infinispan.processor.idempotent.InfinispanIdempotentRepository: <bean id="cacheManager" class="org.infinispan.manager.DefaultCacheManager" init-method="start" destroy-method="stop"/> <bean id="infinispanRepo" class="org.apache.camel.component.infinispan.processor.idempotent.InfinispanIdempotentRepository" factory-method="infinispanIdempotentRepository"> <argument ref="cacheManager"/> <argument value="idempotent"/> </bean> Then we can create our Infinispan idempotent repository in the spring XML file as well: <camelContext xmlns="http://camel.apache.org/schema/spring"> <route id="JpaMessageIdRepositoryTest"> <from uri="direct:start" /> <idempotentConsumer messageIdRepositoryRef="infinispanStore"> <header>messageId</header> <to uri="mock:result" /> </idempotentConsumer> </route> </camelContext>
If you plan to use a RemoteCacheManager instead of DefaultcacheManager please note that you need to force the cache to return values for Map oeprations: RemoteCacheManager manager = new RemoteCacheManager( new ConfigurationBuilder() .addServers("localhost") .forceReturnValues(true) .build(), true ); context.addRoutes(new RouteBuilder() { void configure() { from("direct:start") .idempotentConsumer( header("MessageID"), new InfinispanIdempotentRepository(manager, "idempotent")) .to("mock:result"); } }); Spring XML <?xml version="1.0" encoding="UTF-8"?> <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"> <bean id="cacheManagerFactory" class="org.infinispan.spring.provider.SpringRemoteCacheManagerFactoryBean"> <property name="configurationProperties"> <props> <prop key="infinispan.client.hotrod.server_list">127.0.0.1:11222</prop> <prop key="infinispan.client.hotrod.force_return_values">true</prop> </props> </property> </bean> <bean id="cacheManager" factory-bean="cacheManagerFactory" factory-method="getNativeCacheManager" init-method="start" destroy-method="stop"> </bean> <bean id="infinispanRepo" class="org.apache.camel.component.infinispan.processor.idempotent.InfinispanIdempotentRepository" factory-method="infinispanIdempotentRepository"> <constructor-arg ref="cacheManager"/> <constructor-arg value="idempotent"/> </bean> <camelContext xmlns="http://camel.apache.org/schema/spring"> <route id="infinispan-remote"> <from uri="direct:start" /> <idempotentConsumer messageIdRepositoryRef="infinispanRepo"> <header>MessageId</header> <to uri="log:org.apache.camel.component.infinispan?level=INFO&showAll=true&multiline=true" /> </idempotentConsumer> </route> </camelContext> </beans>
For more information, see these resources... |