Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.이 콘텐츠는 선택한 언어로 제공되지 않습니다.
Chapter 92. Krati
Krati Component 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
Available as of Camel 2.9
This component allows the use krati datastores and datasets inside Camel. Krati is a simple persistent data store with very low latency and high throughput. It is designed for easy integration with read-write-intensive applications with little effort in tuning configuration, performance and JVM garbage collection.
Camel provides a producer and consumer for krati datastore_(key/value engine)_. It also provides an idempotent repository for filtering out duplicate messages.
Maven users will need to add the following dependency to their
pom.xml
for this component:
URI format 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
krati:[the path of the datastore][?options]
krati:[the path of the datastore][?options]
The path of the datastore is the relative path of the folder that krati will use for its datastore.
You can append query options to the URI in the following format,
?option=value&option=value&...
Krati URI Options 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
Name | Default Value | Description |
---|---|---|
operation
|
CamelKratiPut | Producer Only. Specifies the type of operation that will be performed to the datastore. Allowed values are CamelKratiPut, CamelKratiGet, CamelKratiDelete & CamelKratiDeleteAll. |
initialCapacity
|
100 | The inital capcity of the store. |
keySerializer
|
KratiDefaultSerializer | The serializer serializer that will be used to serialize the key. |
valueSerializer
|
KratiDefaultSerializer | The serializer serializer that will be used to serialize the value. |
segmentFactory
|
ChannelSegmentFactory | The segment factory to use. Allowed instance classes: ChannelSegmentFactory,MemorySegmentFactory, MappedSegmentFactory & WriteBufferSegmentFactory. |
hashFunction
|
FnvHashFunction | The hash function to use. Allowed instance classes: FnvHashFunction,Fnv1Hash32,FnvHash64,Fnv1aHash32,Fnv1aHash64, JenkisHashFunction, MurmurHashFunctiom |
maxMessagesPerPoll
|
Camel 2.10.5/2.11.1: The maximum number of messages which can be received in one poll. This can be used to avoid reading in too much data and taking up too much memory. |
For producer endpoint you can override all of the above URI options by passing the appropriate headers to the message.
Message Headers for datastore 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
Header | Description |
---|---|
CamelKratiOperation
|
The operation to be performed on the datastore. The valid options are
|
CamelKratiKey
|
The key. |
CamelKratiValue
|
The value. |
Usage Samples 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
Example 1: Putting to the datastore. 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
This example will show you how you can store any message inside a datastore.
from("direct:put").to("krati:target/test/producertest");
from("direct:put").to("krati:target/test/producertest");
In the above example you can override any of the URI parameters with headers on the message. Here is how the above example would look like using xml to define our route.
<route> <from uri="direct:put"/> <to uri="krati:target/test/producerspringtest"/> </route>
<route>
<from uri="direct:put"/>
<to uri="krati:target/test/producerspringtest"/>
</route>
Example 2: Getting/Reading from a datastore 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
This example will show you how you can read the contnet of a datastore.
from("direct:get") .setHeader(KratiConstants.KRATI_OPERATION, constant(KratiConstants.KRATI_OPERATION_GET)) .to("krati:target/test/producertest");
from("direct:get")
.setHeader(KratiConstants.KRATI_OPERATION, constant(KratiConstants.KRATI_OPERATION_GET))
.to("krati:target/test/producertest");
In the above example you can override any of the URI parameters with headers on the message. Here is how the above example would look like using xml to define our route.
<route> <from uri="direct:get"/> <to uri="krati:target/test/producerspringtest?operation=CamelKratiGet"/> </route>
<route>
<from uri="direct:get"/>
<to uri="krati:target/test/producerspringtest?operation=CamelKratiGet"/>
</route>
Example 3: Consuming from a datastore 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
This example will consume all items that are under the specified datastore.
from("krati:target/test/consumertest") .to("direct:next");
from("krati:target/test/consumertest")
.to("direct:next");
You can achieve the same goal by using xml, as you can see below.
<route> <from uri="krati:target/test/consumerspringtest"/> <to uri="mock:results"/> </route>
<route>
<from uri="krati:target/test/consumerspringtest"/>
<to uri="mock:results"/>
</route>
Idempotent Repository 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
As already mentioned this component also offers and idemptonet repository which can be used for filtering out duplicate messages.
from("direct://in").idempotentConsumer(header("messageId"), new KratiIdempotentRepositroy("/tmp/idempotent").to("log://out");
from("direct://in").idempotentConsumer(header("messageId"), new KratiIdempotentRepositroy("/tmp/idempotent").to("log://out");
See also 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!