...
URI format
Code Block |
---|
infinispan://cacheName?[options]
|
Note | |||
---|---|---|---|
| |||
The URI syntax has changed since camel 2.19.0, for previous camel versions the URI format is:
|
URI Options
The producer allows sending messages to a local infinispan cache configured in the registry, or to a remote cache using the HotRod protocol.
The consumer allows listening for events from local infinispan cache accessible from the registry.
Name | Default Value | Type | Context | Description |
---|---|---|---|---|
cacheContainer |
| CacheContainer | Shared | Reference to a |
cacheNamehosts |
| String | SharedThe cache name to use. If not specified, default cache is used. | Specifies the hosts of the Infinispan instance. |
command |
| String | Producer | The operation to perform. Currently supports the following values: PUT, GET, REMOVE, CLEAR. From Camel 2.16: PUT ALL, PUT IF ABSENT, REPLACE, SIZE. From Camel 2.17: PUT ASYNC, PUT ALL ASYNC, PUT IF ABSENT ASYNC, CONTAINS KEY, CONTAINS VALUE, REMOVE ASYNC, REPLACE ASYNC, CLEAR ASYNC, QUERY From Camel 2.18: STATS |
eventTypes |
| Set<String> | Consumer | The event types to register. By default will listen for all event types. Possible values defined in org.infinispan.notifications.cachelistener.event.Event.Type |
sync |
| Boolean | Consumer | By default the consumer will receive notifications synchronously, by the same thread that process the cache operation. |
queryBuilder | null | InfinispanQueryBuilder | Shared | From Camel 2.17: the QueryBuilder to be used by QUERY command if CamelInfinispanQueryBuilder header is not set |
customListener | null | InfinispanCustomListener | Consumer | From Camel 2.17: a custom event listener |
clusteredListener | false | Boolean | Consumer | From Camel 2.17: if ture the listener will be installed for entiere cluster |
...
Code Block | ||||
---|---|---|---|---|
| ||||
from("direct:start")
.setHeader(InfinispanConstants.OPERATION, constant(InfinispanConstants.GET))
.setHeader(InfinispanConstants.KEY, constant("123"))
.to("infinispan://localhost?cacheContainer=#cacheContainer");
|
...
First, we need to create a cacheManager and then configure our
...
our org.apache.camel.component.infinispan.processor.idempotent.InfinispanIdempotentRepository:
Code Block | ||||
---|---|---|---|---|
| ||||
<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> |
...
Code Block | ||||
---|---|---|---|---|
| ||||
<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:
Code Block | ||
---|---|---|
| ||
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");
}
}); |
Code Block | ||||
---|---|---|---|---|
| ||||
<?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...
...