...
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 |
...
Name | Default Value | Type | Context | Description |
---|---|---|---|---|
CamelInfinispanCacheName |
| String | Shared | The cache participating in the operation or event. |
CamelInfinispanOperation |
| String | Producer | The operation to perform: CamelInfinispanOperationPut, CamelInfinispanOperationGet, CamelInfinispanOperationRemove, CamelInfinispanOperationClear. From Camel 2.16: CamelInfinispanOperationPutAll, CamelInfinispanOperationPutIfAbsent, CamelInfinispanOperationReplace, CamelInfinispanOperationSize. |
CamelInfinispanMap |
| Map | Producer | A Map to use in case of CamelInfinispanOperationPutAll operation |
CamelInfinispanKey |
| Object | Shared | The key to perform the operation to or the key generating the event. |
CamelInfinispanValue |
| Object | Producer | The value to use for the operation. |
CamelInfinispanOperationResult |
| Object | Producer | The result of the operation. |
CamelInfinispanEventType |
| String | Consumer | The type of the received event. Possible values defined here org.infinispan.notifications.cachelistener.event.Event.Type |
CamelInfinispanIsPre |
| Boolean | Consumer | Infinispan fires two events for each operation: one before and one after the operation. |
CamelInfinispanLifespanTime |
| long | Producer | The Lifespan time of a value inside the cache. Negative values are interpreted as infinity. |
CamelInfinispanTimeUnit |
| String | Producer | The Time Unit of an entry Lifespan Time. |
CamelInfinispanMaxIdleTime |
| long | Producer | The maximum amount of time an entry is allowed to be idle for before it is considered as expired. |
CamelInfinispanMaxIdleTimeUnit |
| String | Producer | The Time Unit of an entry Max Idle Time. |
CamelInfinispanQueryBuilder | null | InfinispanQueryBuilder | Producer | From Camel 2.17: The QueryBuilde to use for QUERY command, if not present the command defaults to InifinispanConfiguration's one |
CamelInfinispanIgnoreReturnValues | null | Boolean | Producer | From Camel 2.17: If this header is set, the return value for cache operation returning something is ignored by the client application |
Example
Below is an example route that retrieves a value from the cache for a specific key:
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...
...