第64章 Hazelcast コンポーネント
Hazelcast コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Apache Camel 2.7 で利用可能
hazelcast: コンポーネントを使用すると、Hazelcast 分散データグリッド/キャッシュを操作することができます。Hazelcast は、Java (単一の jar)で完全に書き込まれたメモリーデータグリッドの です。マップ、マルチマップ(同じキー、n 値)、queue、list、atomic 番号など、さまざまなデータストアの優れたパレットを提供します。Hazelcast を使用する主な理由は、単純なクラスターサポートです。ネットワーク上でマルチキャストを有効にしている場合は、追加設定なしで、数百のノードを持つクラスターを実行できます。Hazelcast は、ノード間の n コピー(デフォルトは 1)、キャッシュ永続性、ネットワーク設定(必要な場合)、ニアキャッシュ、enviction などの機能を追加するように簡単に設定できます。詳細は、Hazelcast のドキュメント( http://www.hazelcast.com/docs.jsp )を参照してください。
Maven ユーザーは、このコンポーネントの
pom.xml に以下の依存関係を追加する必要があります。
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-hazelcast</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
hazelcast:[ map | multimap | queue | topic | seda | set | atomicvalue | instance | list]:cachename[?options]
オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
|
名前
|
必須
|
説明
|
hazelcastInstance
|
いいえ
|
Camel 2.14: hazelcast エンドポイントに使用できる hazelcast インスタンス参照。インスタンス参照を指定しない場合、Camel は camel-hazelcast インスタンスからデフォルトの hazelcast インスタンスを使用します。
|
hazelcastInstanceName
|
No
|
|
defaultOperation
|
-1
|
Camel 2.15: 操作ヘッダーが提供されていない場合に使用するデフォルトの操作を指定します。
|
警告
2 番目の接頭辞を使用して、使用するデータストアのタイプを定義する必要があります。
セクション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
マップの使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
map cache producer - to("hazelcast:map:foo") リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
マップに値を保存する場合は、マップキャッシュプロデューサーを使用できます。マップキャッシュプロデューサーは、5 つの操作(put、get、update、delete、query)を提供します。最初の 4 では、hazelcast.operation.type ヘッダー変数内に操作を提供する必要があります。Java DSL では、
org.apache.camel.component.hazelcast.HazelcastConstants からの定数を使用できます。
リクエストメッセージのヘッダー変数:
| 名前 | タイプ | 説明 |
|---|---|---|
hazelcast.operation.type
|
文字列
|
有効な値は put、delete、get、update、query です。 |
hazelcast.objectId
|
文字列
|
キャッシュ内にオブジェクトを保存/検索するオブジェクト ID (クエリー操作には必要ありません) |
警告
Apache Camel 2.8 でヘッダー変数が変更されました。
| 名前 | タイプ | 説明 |
|---|---|---|
CamelHazelcastOperationType
|
文字列
|
有効な値は put、delete、get、update、query Version 2.8です。 |
CamelHazelcastObjectId
|
文字列
|
キャッシュ内にオブジェクトを保存/検索するオブジェクト ID (クエリー操作には必要ありません) バージョン 2.8 |
以下を使用してサンプルを呼び出すことができます。
template.sendBodyAndHeader("direct:[put|get|update|delete|query]", "my-foo", HazelcastConstants.OBJECT_ID, "4711");
put の例: リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Java DSL の場合
from("direct:put")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.PUT_OPERATION))
.toF("hazelcast:%sfoo", HazelcastConstants.MAP_PREFIX);
Spring DSL:
<route>
<from uri="direct:put" />
<!-- If using version 2.8 and above set headerName to "CamelHazelcastOperationType" -->
<setHeader headerName="hazelcast.operation.type">
<constant>put</constant>
</setHeader>
<to uri="hazelcast:map:foo" />
</route>
get の例: リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Java DSL の場合
from("direct:get")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.GET_OPERATION))
.toF("hazelcast:%sfoo", HazelcastConstants.MAP_PREFIX)
.to("seda:out");
Spring DSL:
<route>
<from uri="direct:get" />
<!-- If using version 2.8 and above set headerName to "CamelHazelcastOperationType" -->
<setHeader headerName="hazelcast.operation.type">
<constant>get</constant>
</setHeader>
<to uri="hazelcast:map:foo" />
<to uri="seda:out" />
</route>
更新のサンプル: リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Java DSL の場合
from("direct:update")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.UPDATE_OPERATION))
.toF("hazelcast:%sfoo", HazelcastConstants.MAP_PREFIX);
Spring DSL:
<route>
<from uri="direct:update" />
<!-- If using version 2.8 and above set headerName to "CamelHazelcastOperationType" -->
<setHeader headerName="hazelcast.operation.type">
<constant>update</constant>
</setHeader>
<to uri="hazelcast:map:foo" />
</route>
削除のサンプル: リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Java DSL の場合
from("direct:delete")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.DELETE_OPERATION))
.toF("hazelcast:%sfoo", HazelcastConstants.MAP_PREFIX);
Spring DSL:
<route>
<from uri="direct:delete" />
<!-- If using version 2.8 and above set headerName to "CamelHazelcastOperationType" -->
<setHeader headerName="hazelcast.operation.type">
<constant>delete</constant>
</setHeader>
<to uri="hazelcast:map:foo" />
</route>
クエリーのサンプル リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Java DSL の場合
from("direct:query")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.QUERY_OPERATION))
.toF("hazelcast:%sfoo", HazelcastConstants.MAP_PREFIX)
.to("seda:out");
Spring DSL:
<route>
<from uri="direct:query" />
<!-- If using version 2.8 and above set headerName to "CamelHazelcastOperationType" -->
<setHeader headerName="hazelcast.operation.type">
<constant>query</constant>
</setHeader>
<to uri="hazelcast:map:foo" />
<to uri="seda:out" />
</route>
クエリー操作 Hazelcast は、分散マップをクエリーする構文のような SQL を提供します。
String q1 = "bar > 1000";
template.sendBodyAndHeader("direct:query", null, HazelcastConstants.QUERY, q1);
map cache consumer - from("hazelcast:map:foo") リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Hazelcast は、データグリッドでイベントリスナーを提供します。キャッシュを操作する場合に通知する場合は、map コンシューマーを使用できます。、update、delete、envict の 4 つのイベントがあります。イベントタイプはhazelcast.listener.actionヘッダー変数に保存されます。map コンシューマーは、これらの変数内に追加情報を提供します。
応答メッセージ内のヘッダー変数:
| 名前 | タイプ | 説明 |
|---|---|---|
hazelcast.listener.time
|
Long
|
イベントの時間(ミリ秒単位) |
hazelcast.listener.type
|
文字列
|
マップコンシューマーは"cachelistener"をここで設定します。 |
hazelcast.listener.action
|
文字列
|
イベントのタイプ:ここでは、更新、エンコーデント、および 削除され ました。 |
hazelcast.objectId
|
文字列
|
オブジェクトの oid |
hazelcast.cache.name
|
文字列
|
キャッシュの名前(例:foo) |
hazelcast.cache.type
|
文字列
|
キャッシュのタイプ - マップ |
警告
Apache Camel 2.8 でヘッダー変数が変更されました。
| 名前 | タイプ | 説明 |
|---|---|---|
CamelHazelcastListenerTime
|
Long
|
イベントの時間(ミリス バージョン 2.8 でのイベント時間) |
CamelHazelcastListenerType
|
文字列
|
map consumer sets here "cachelistener" Version 2.8 |
CamelHazelcastListenerAction
|
文字列
|
イベントのタイプ:ここで、更新、エンコーデーション、および 削除 さ れました。 バージョン 2.8 |
CamelHazelcastObjectId
|
文字列
|
The oid of the object Version 2.8 |
CamelHazelcastCacheName
|
文字列
|
キャッシュの名前(例:foo バージョン 2.8) |
CamelHazelcastCacheType
|
文字列
|
キャッシュのタイプ:ここでは、マップ バージョン 2.8 |
オブジェクト値は、メッセージボディー内に put および update アクションに保存されます。
以下に例を示します。
fromF("hazelcast:%sfoo", HazelcastConstants.MAP_PREFIX)
.log("object...")
.choice()
.when(header(HazelcastConstants.LISTENER_ACTION).isEqualTo(HazelcastConstants.ADDED))
.log("...added")
.to("mock:added")
.when(header(HazelcastConstants.LISTENER_ACTION).isEqualTo(HazelcastConstants.ENVICTED))
.log("...envicted")
.to("mock:envicted")
.when(header(HazelcastConstants.LISTENER_ACTION).isEqualTo(HazelcastConstants.UPDATED))
.log("...updated")
.to("mock:updated")
.when(header(HazelcastConstants.LISTENER_ACTION).isEqualTo(HazelcastConstants.REMOVED))
.log("...removed")
.to("mock:removed")
.otherwise()
.log("fail!");
マルチマップの使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
multimap cache producer - to("hazelcast:multimap:foo") リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
マルチマップは、n の値を 1 つのキーに格納できるキャッシュです。マルチマッププロデューサーは 4 つの操作(put、get、removevalue、delete)を提供します。
リクエストメッセージのヘッダー変数:
| 名前 | タイプ | 説明 |
|---|---|---|
hazelcast.operation.type
|
文字列
|
有効な値は put、get、removevalue、delete です。 |
hazelcast.objectId
|
文字列
|
キャッシュ内にオブジェクトを保存/検索するオブジェクト ID |
警告
Apache Camel 2.8 でヘッダー変数が変更されました。
Apache Camel 2.8 でのリクエストメッセージのヘッダー変数:
| 名前 | タイプ | 説明 |
|---|---|---|
CamelHazelcastOperationType
|
文字列
|
有効な値は put、delete、get、update、query Available as Apache Camel 2.8です。 |
CamelHazelcastObjectId
|
文字列
|
キャッシュ内にオブジェクトを保存/検索するオブジェクト ID (クエリー操作には必要ありません) バージョン 2.8 |
以下を使用してサンプルを呼び出すことができます。
template.sendBodyAndHeader("direct:[put|get|update|delete|query]", "my-foo", HazelcastConstants.OBJECT_ID, "4711");
put の例: リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Java DSL の場合
from("direct:put")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.PUT_OPERATION))
.toF("hazelcast:%sfoo", HazelcastConstants.MAP_PREFIX);
Spring DSL:
<route>
<from uri="direct:put" />
<!-- If using version 2.8 and above set headerName to "CamelHazelcastOperationType" -->
<setHeader headerName="hazelcast.operation.type">
<constant>put</constant>
</setHeader>
<to uri="hazelcast:map:foo" />
</route>
get の例: リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Java DSL の場合
from("direct:get")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.GET_OPERATION))
.toF("hazelcast:%sfoo", HazelcastConstants.MAP_PREFIX)
.to("seda:out");
Spring DSL:
<route>
<from uri="direct:get" />
<!-- If using version 2.8 and above set headerName to "CamelHazelcastOperationType" -->
<setHeader headerName="hazelcast.operation.type">
<constant>get</constant>
</setHeader>
<to uri="hazelcast:map:foo" />
<to uri="seda:out" />
</route>
更新のサンプル: リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Java DSL の場合
from("direct:update")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.UPDATE_OPERATION))
.toF("hazelcast:%sfoo", HazelcastConstants.MAP_PREFIX);
Spring DSL:
<route>
<from uri="direct:update" />
<!-- If using version 2.8 and above set headerName to "CamelHazelcastOperationType" -->
<setHeader headerName="hazelcast.operation.type">
<constant>update</constant>
</setHeader>
<to uri="hazelcast:map:foo" />
</route>
削除のサンプル: リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Java DSL の場合
from("direct:delete")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.DELETE_OPERATION))
.toF("hazelcast:%sfoo", HazelcastConstants.MAP_PREFIX);
Spring DSL:
<route>
<from uri="direct:delete" />
<!-- If using version 2.8 and above set headerName to "CamelHazelcastOperationType" -->
<setHeader headerName="hazelcast.operation.type">
<constant>delete</constant>
</setHeader>
<to uri="hazelcast:map:foo" />
</route>
クエリーのサンプル リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Java DSL の場合
from("direct:query")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.QUERY_OPERATION))
.toF("hazelcast:%sfoo", HazelcastConstants.MAP_PREFIX)
.to("seda:out");
Spring DSL:
<route>
<from uri="direct:query" />
<!-- If using version 2.8 and above set headerName to "CamelHazelcastOperationType" -->
<setHeader headerName="hazelcast.operation.type">
<constant>query</constant>
</setHeader>
<to uri="hazelcast:map:foo" />
<to uri="seda:out" />
</route>
クエリー操作 Hazelcast は、分散マップをクエリーする構文のような SQL を提供します。
String q1 = "bar > 1000";
template.sendBodyAndHeader("direct:query", null, HazelcastConstants.QUERY, q1);
map cache consumer - from("hazelcast:map:foo") リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Hazelcast は、データグリッドでイベントリスナーを提供します。キャッシュを操作する場合に通知する場合は、map コンシューマーを使用できます。、update、delete、envict の 4 つのイベントがあります。イベントタイプはhazelcast.listener.actionヘッダー変数に保存されます。map コンシューマーは、これらの変数内に追加情報を提供します。
応答メッセージ内のヘッダー変数:
| 名前 | タイプ | 説明 |
|---|---|---|
hazelcast.listener.time
|
Long
|
イベントの時間(ミリ秒単位) |
hazelcast.listener.type
|
文字列
|
マップコンシューマーは"cachelistener"をここで設定します。 |
hazelcast.listener.action
|
文字列
|
イベントのタイプ:ここでは、更新、エンコーデント、および 削除され ました。 |
hazelcast.objectId
|
文字列
|
オブジェクトの oid |
hazelcast.cache.name
|
文字列
|
キャッシュの名前(例:foo) |
hazelcast.cache.type
|
文字列
|
キャッシュのタイプ - マップ |
警告
Apache Camel 2.8 でヘッダー変数が変更されました。
| 名前 | タイプ | 説明 |
|---|---|---|
CamelHazelcastListenerTime
|
Long
|
イベントの時間(ミリス バージョン 2.8 でのイベント時間) |
CamelHazelcastListenerType
|
文字列
|
map consumer sets here "cachelistener" Version 2.8 |
CamelHazelcastListenerAction
|
文字列
|
イベントのタイプ:ここで、更新、エンコーデーション、および 削除 さ れました。 バージョン 2.8 |
CamelHazelcastObjectId
|
文字列
|
The oid of the object Version 2.8 |
CamelHazelcastCacheName
|
文字列
|
キャッシュの名前(例:foo バージョン 2.8) |
CamelHazelcastCacheType
|
文字列
|
キャッシュのタイプ:ここでは、マップ バージョン 2.8 |
オブジェクト値は、メッセージボディー内に put および update アクションに保存されます。
以下に例を示します。
fromF("hazelcast:%sfoo", HazelcastConstants.MAP_PREFIX)
.log("object...")
.choice()
.when(header(HazelcastConstants.LISTENER_ACTION).isEqualTo(HazelcastConstants.ADDED))
.log("...added")
.to("mock:added")
.when(header(HazelcastConstants.LISTENER_ACTION).isEqualTo(HazelcastConstants.ENVICTED))
.log("...envicted")
.to("mock:envicted")
.when(header(HazelcastConstants.LISTENER_ACTION).isEqualTo(HazelcastConstants.UPDATED))
.log("...updated")
.to("mock:updated")
.when(header(HazelcastConstants.LISTENER_ACTION).isEqualTo(HazelcastConstants.REMOVED))
.log("...removed")
.to("mock:removed")
.otherwise()
.log("fail!");
マルチマップの使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
multimap cache producer - to("hazelcast:multimap:foo") リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
マルチマップは、n の値を 1 つのキーに格納できるキャッシュです。マルチマッププロデューサーは 4 つの操作(put、get、removevalue、delete)を提供します。
リクエストメッセージのヘッダー変数:
| 名前 | タイプ | 説明 |
|---|---|---|
hazelcast.operation.type
|
文字列
|
有効な値は put、get、removevalue、delete です。 |
hazelcast.objectId
|
文字列
|
キャッシュ内にオブジェクトを保存/検索するオブジェクト ID |
警告
Apache Camel 2.8 でヘッダー変数が変更されました。
| 名前 | タイプ | 説明 |
|---|---|---|
CamelHazelcastOperationType
|
文字列
|
有効な値は put、get、removevalue、および delete Version 2.8です。 |
CamelHazelcastObjectId
|
文字列
|
キャッシュ バージョン 2.8内でオブジェクトを保存/検索するオブジェクト ID |
put の例: リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Java DSL の場合
from("direct:put")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.PUT_OPERATION))
.to(String.format("hazelcast:%sbar", HazelcastConstants.MULTIMAP_PREFIX));
Spring DSL:
<route>
<from uri="direct:put" />
<log message="put.."/>
<!-- If using version 2.8 and above set headerName to "CamelHazelcastOperationType" -->
<setHeader headerName="hazelcast.operation.type">
<constant>put</constant>
</setHeader>
<to uri="hazelcast:multimap:foo" />
</route>
removevalue の例: リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Java DSL の場合
from("direct:removevalue")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.REMOVEVALUE_OPERATION))
.toF("hazelcast:%sbar", HazelcastConstants.MULTIMAP_PREFIX);
Spring DSL:
<route>
<from uri="direct:removevalue" />
<log message="removevalue..."/>
<!-- If using version 2.8 and above set headerName to "CamelHazelcastOperationType" -->
<setHeader headerName="hazelcast.operation.type">
<constant>removevalue</constant>
</setHeader>
<to uri="hazelcast:multimap:foo" />
</route>
値を削除するには、メッセージのボディー内で削除する値を指定する必要があります。マルチマップオブジェクト
} がある場合は、メッセージボディー内に my-foo の値を削除する必要があります。
get の例: リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Java DSL の場合
from("direct:get")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.GET_OPERATION))
.toF("hazelcast:%sbar", HazelcastConstants.MULTIMAP_PREFIX)
.to("seda:out");
Spring DSL:
<route>
<from uri="direct:get" />
<log message="get.."/>
<!-- If using version 2.8 and above set headerName to "CamelHazelcastOperationType" -->
<setHeader headerName="hazelcast.operation.type">
<constant>get</constant>
</setHeader>
<to uri="hazelcast:multimap:foo" />
<to uri="seda:out" />
</route>
削除のサンプル: リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Java DSL の場合
from("direct:delete")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.DELETE_OPERATION))
.toF("hazelcast:%sbar", HazelcastConstants.MULTIMAP_PREFIX);
Spring DSL:
<route>
<from uri="direct:delete" />
<log message="delete.."/>
<!-- If using version 2.8 and above set headerName to "CamelHazelcastOperationType" -->
<setHeader headerName="hazelcast.operation.type">
<constant>delete</constant>
</setHeader>
<to uri="hazelcast:multimap:foo" />
</route>
以下を使用して、テストクラスで呼び出しできます。
template.sendBodyAndHeader("direct:[put|get|removevalue|delete]", "my-foo", HazelcastConstants.OBJECT_ID, "4711");
multimap cache consumer - from("hazelcast:multimap:foo") リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
マルチマップキャッシュの場合、このコンポーネントはマップキャッシュコンシューマーと同じリスナー/変数を提供します(update および enviction リスナーを除く)。唯一の違いは、URI 内の multimap 接頭辞です。以下は例です。
fromF("hazelcast:%sbar", HazelcastConstants.MULTIMAP_PREFIX)
.log("object...")
.choice()
.when(header(HazelcastConstants.LISTENER_ACTION).isEqualTo(HazelcastConstants.ADDED))
.log("...added")
.to("mock:added")
//.when(header(HazelcastConstants.LISTENER_ACTION).isEqualTo(HazelcastConstants.ENVICTED))
// .log("...envicted")
// .to("mock:envicted")
.when(header(HazelcastConstants.LISTENER_ACTION).isEqualTo(HazelcastConstants.REMOVED))
.log("...removed")
.to("mock:removed")
.otherwise()
.log("fail!");
応答メッセージ内のヘッダー変数:
| 名前 | タイプ | 説明 |
|---|---|---|
hazelcast.listener.time
|
Long
|
イベントの時間(ミリ秒単位) |
hazelcast.listener.type
|
文字列
|
マップコンシューマーは"cachelistener"をここで設定します。 |
hazelcast.listener.action
|
文字列
|
イベントのタイプ - ここでは 追加 および 削除 (および 近い動作) |
hazelcast.objectId
|
文字列
|
オブジェクトの oid |
hazelcast.cache.name
|
文字列
|
キャッシュの名前(例:foo) |
hazelcast.cache.type
|
文字列
|
キャッシュのタイプ(ここではマルチマップ) |
エビクションは機能として追加されますが、すぐに追加されます(これは Hazelcast の問題です)。
警告
Apache Camel 2.8 でヘッダー変数が変更されました。
| 名前 | タイプ | 説明 |
|---|---|---|
CamelHazelcastListenerTime
|
Long
|
イベントの時間(ミリス バージョン 2.8 でのイベント時間) |
CamelHazelcastListenerType
|
文字列
|
map consumer sets here "cachelistener" Version 2.8 |
CamelHazelcastListenerAction
|
文字列
|
イベントのタイプ:ここでは 追加 および 削除 (および近い 動作) バージョン 2.8 |
CamelHazelcastObjectId
|
文字列
|
The oid of the object Version 2.8 |
CamelHazelcastCacheName
|
文字列
|
キャッシュの名前(例:foo バージョン 2.8) |
CamelHazelcastCacheType
|
文字列
|
キャッシュのタイプ(ここではマルチマップ バージョン 2.8) |
キューの使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
キュープロデューサー to ("hazelcast:queue:foo") リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
キュープロデューサーは 6 つの操作(add、put、poll、peek、provided、removevalue)を提供します。
追加する例: リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
from("direct:add")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.ADD_OPERATION))
.toF("hazelcast:%sbar", HazelcastConstants.QUEUE_PREFIX);
put の例: リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
from("direct:put")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.PUT_OPERATION))
.toF("hazelcast:%sbar", HazelcastConstants.QUEUE_PREFIX);
ポーリングのサンプル: リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
from("direct:poll")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.POLL_OPERATION))
.toF("hazelcast:%sbar", HazelcastConstants.QUEUE_PREFIX);
peek の例: リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
from("direct:peek")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.PEEK_OPERATION))
.toF("hazelcast:%sbar", HazelcastConstants.QUEUE_PREFIX);
オファーのサンプル: リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
from("direct:offer")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.OFFER_OPERATION))
.toF("hazelcast:%sbar", HazelcastConstants.QUEUE_PREFIX);
removevalue の例: リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
from("direct:removevalue")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.REMOVEVALUE_OPERATION))
.toF("hazelcast:%sbar", HazelcastConstants.QUEUE_PREFIX);
キューコンシューマー from ("hazelcast:queue:foo") リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
キューコンシューマーは、2 つの操作(add、remove)を提供します。
fromF("hazelcast:%smm", HazelcastConstants.QUEUE_PREFIX)
.log("object...")
.choice()
.when(header(HazelcastConstants.LISTENER_ACTION).isEqualTo(HazelcastConstants.ADDED))
.log("...added")
.to("mock:added")
.when(header(HazelcastConstants.LISTENER_ACTION).isEqualTo(HazelcastConstants.REMOVED))
.log("...removed")
.to("mock:removed")
.otherwise()
.log("fail!");
トピックの使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
トピックプロデューサー - to ("hazelcast:topic:foo") リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
トピックプロデューサーは 1 つの操作(publish)のみを提供します。
公開のサンプル リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
from("direct:add")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.PUBLISH_OPERATION))
.toF("hazelcast:%sbar", HazelcastConstants.PUBLISH_OPERATION);
Topic consumer - from ("hazelcast:topic:foo") リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
トピックコンシューマーは 1 つの操作(受信)のみを提供します。このコンポーネントは、トピックの場合のように、複数の消費をサポートすることが予想されます。そのため、同じハザーキャストのトピックに必要な数のコンシューマーを自由に使用できます。
fromF("hazelcast:%sfoo", HazelcastConstants.TOPIC_PREFIX)
.choice()
.when(header(HazelcastConstants.LISTENER_ACTION).isEqualTo(HazelcastConstants.RECEIVED))
.log("...message received")
.otherwise()
.log("...this should never have happened")
List の使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
プロデューサー to ("hazelcast:list:foo")を一覧表示します。 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
リストプロデューサーは、4 つの操作(add、set、get、removevalue)を提供します。
追加する例: リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
from("direct:add")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.ADD_OPERATION))
.toF("hazelcast:%sbar", HazelcastConstants.LIST_PREFIX);
get の例: リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
from("direct:get")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.GET_OPERATION))
.toF("hazelcast:%sbar", HazelcastConstants.LIST_PREFIX)
.to("seda:out");
setvalue の例: リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
from("direct:set")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.SETVALUE_OPERATION))
.toF("hazelcast:%sbar", HazelcastConstants.LIST_PREFIX);
removevalue の例: リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
from("direct:removevalue")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.REMOVEVALUE_OPERATION))
.toF("hazelcast:%sbar", HazelcastConstants.LIST_PREFIX);
警告
hazelcast でまだサポートされておらず、set、get、および removevalue は今後追加されることに注意してください。
list consumer from ("hazelcast:list:foo") リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
リストコンシューマーは、2 つの操作(add、remove)を提供します。
fromF("hazelcast:%smm", HazelcastConstants.LIST_PREFIX)
.log("object...")
.choice()
.when(header(HazelcastConstants.LISTENER_ACTION).isEqualTo(HazelcastConstants.ADDED))
.log("...added")
.to("mock:added")
.when(header(HazelcastConstants.LISTENER_ACTION).isEqualTo(HazelcastConstants.REMOVED))
.log("...removed")
.to("mock:removed")
.otherwise()
.log("fail!");
SEDA の使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
SEDA コンポーネントは、提供される REST コンポーネントとは異なります。これは、コア "SEDA" コンポーネントと同様に、非同期 SEDA アーキテクチャーをサポートするためにワークキューを実装します。
SEDA producer to("hazelcast:seda:foo") リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
SEDA プロデューサーは操作を提供しません。指定のキューにデータのみを送信します。
| 名前 | デフォルト値 | 説明 |
|---|---|---|
transferExchange
|
false
|
Apache Camel 2.8.0: true に設定すると、エクスチェンジ全体が転送されます。ヘッダーまたはボディーにシリアライズ可能なオブジェクトが含まれる場合、それらはスキップされます。 |
Java DSL:
from("direct:foo")
.to("hazelcast:seda:foo");
Spring DSL の場合:
<route>
<from uri="direct:start" />
<to uri="hazelcast:seda:foo" />
</route>
SEDA consumer from("hazelcast:seda:foo") リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
SEDA コンシューマーは操作を提供しません。指定のキューからデータのみを取得します。
| 名前 | デフォルト値 | 説明 |
|---|---|---|
pollInterval
|
1000
|
Camel 2.15 以降非推奨になりました。代わりに pollTimeout を使用します。
|
pollTimeout
|
1000
|
SEDA キューから消費する際に使用するタイムアウト。タイムアウトが発生すると、コンシューマーは実行を継続できるかどうかを確認できます。値を低く設定すると、シャットダウン時にコンシューマーがより迅速に対応できるようになります。 |
concurrentConsumers
|
1
|
SEDA キューからの同時コンシューマーのポーリングを使用します。 |
transferExchange
|
false
|
Camel 2.8.0: true に設定すると、エクスチェンジ全体が転送されます。ヘッダーまたはボディーにシリアライズ可能なオブジェクトが含まれる場合、それらはスキップされます。 |
transacted
|
false
|
Camel 2.10.4: true に設定すると、コンシューマーはトランザクションモードで実行されます。 |
Java DSL:
from("hazelcast:seda:foo")
.to("mock:result");
Spring DSL:
<route>
<from uri="hazelcast:seda:foo" />
<to uri="mock:result" />
</route>
Atomic Number の使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
警告
このエンドポイントにはコンシューマーがありません\!
atomic number producer - to ("hazelcast:atomicnumber:foo") リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
アトミック番号は、単にグリッドワイド番号(long)を提供するオブジェクトです。このプロデューサーの操作は setvalue (指定の値で数値を設定)、get、増加(+1)、縮小(-1)、および destroy です。
リクエストメッセージのヘッダー変数:
| 名前 | タイプ | 説明 |
|---|---|---|
hazelcast.operation.type
|
文字列
|
有効な値は、setvalue、get、increase、decrease、destroy です。 |
警告
Apache Camel 2.8 でヘッダー変数が変更されました。
| 名前 | タイプ | 説明 |
|---|---|---|
CamelHazelcastOperationType
|
文字列
|
有効な値は、setvalue、get、grade、destroy Available (Apache Camel バージョン 2.8 の場合)です。 |
セットのサンプル: リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Java DSL の場合
from("direct:set")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.SETVALUE_OPERATION))
.toF("hazelcast:%sfoo", HazelcastConstants.ATOMICNUMBER_PREFIX);
Spring DSL:
<route>
<from uri="direct:set" />
<!-- If using version 2.8 and above set headerName to "CamelHazelcastOperationType" -->
<setHeader headerName="hazelcast.operation.type">
<constant>setvalue</constant>
</setHeader>
<to uri="hazelcast:atomicvalue:foo" />
</route>
メッセージボディー内で設定する値を指定します(ここでは 10)。
template.sendBody ("direct:set", 10);
get の例: リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Java DSL の場合
from("direct:get")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.GET_OPERATION))
.toF("hazelcast:%sfoo", HazelcastConstants.ATOMICNUMBER_PREFIX);
Spring DSL:
<route>
<from uri="direct:get" />
<!-- If using version 2.8 and above set headerName to "CamelHazelcastOperationType" -->
<setHeader headerName="hazelcast.operation.type">
<constant>get</constant>
</setHeader>
<to uri="hazelcast:atomicvalue:foo" />
</route>
long body = template.requestBody("direct:get", null, Long.class); で数値を取得できます。
increment のサンプル: リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Java DSL の場合
from("direct:increment")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.INCREMENT_OPERATION))
.toF("hazelcast:%sfoo", HazelcastConstants.ATOMICNUMBER_PREFIX);
Spring DSL:
<route>
<from uri="direct:increment" />
<!-- If using version 2.8 and above set headerName to "CamelHazelcastOperationType" -->
<setHeader headerName="hazelcast.operation.type">
<constant>increment</constant>
</setHeader>
<to uri="hazelcast:atomicvalue:foo" />
</route>
実際の値(インクリメント後)はメッセージのボディー内に提供されます。
デクリメントのサンプル: リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Java DSL の場合
from("direct:decrement")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.DECREMENT_OPERATION))
.toF("hazelcast:%sfoo", HazelcastConstants.ATOMICNUMBER_PREFIX);
Spring DSL:
<route>
<from uri="direct:decrement" />
<!-- If using version 2.8 and above set headerName to "CamelHazelcastOperationType" -->
<setHeader headerName="hazelcast.operation.type">
<constant>decrement</constant>
</setHeader>
<to uri="hazelcast:atomicvalue:foo" />
</route>
実際の値(デクリメント後)はメッセージのボディー内に提供されます。
破棄のサンプル リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
警告
Hazelcast にはバグがあります。そのため、この機能は適切に機能しない可能性があります。1.9.3 で修正されます。
Java DSL の場合
from("direct:destroy")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.DESTROY_OPERATION))
.toF("hazelcast:%sfoo", HazelcastConstants.ATOMICNUMBER_PREFIX);
Spring DSL:
<route>
<from uri="direct:destroy" />
<!-- If using version 2.8 and above set headerName to "CamelHazelcastOperationType" -->
<setHeader headerName="hazelcast.operation.type">
<constant>destroy</constant>
</setHeader>
<to uri="hazelcast:atomicvalue:foo" />
</route>
クラスターのサポート リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
警告
このエンドポイントはプロデューサーを提供しません。
instance consumer - from("hazelcast:instance:foo") リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Hazelcast は 1 つのサーバーノードで理にかなっていますが、クラスター環境では非常に強力です。インスタンスコンシューマーは、新しいキャッシュインスタンスがクラスターに参加したり、クラスターから離脱したりする場合に実行されます。
以下に例を示します。
fromF("hazelcast:%sfoo", HazelcastConstants.INSTANCE_PREFIX)
.log("instance...")
.choice()
.when(header(HazelcastConstants.LISTENER_ACTION).isEqualTo(HazelcastConstants.ADDED))
.log("...added")
.to("mock:added")
.otherwise()
.log("...removed")
.to("mock:removed");
各イベントは、メッセージヘッダー内で以下の情報を提供します。
応答メッセージ内のヘッダー変数:
| 名前 | タイプ | 説明 |
|---|---|---|
hazelcast.listener.time
|
Long
|
イベントの時間(ミリ秒単位) |
hazelcast.listener.type
|
文字列
|
map consumer sets here "instancelistener" |
hazelcast.listener.action
|
文字列
|
イベントのタイプ:ここで 追加 または 削除されています。 |
hazelcast.instance.host
|
文字列
|
インスタンスのホスト名 |
hazelcast.instance.port
|
整数
|
インスタンスのポート番号 |
警告
Apache Camel 2.8 でヘッダー変数が変更されました。
| 名前 | タイプ | 説明 |
|---|---|---|
CamelHazelcastListenerTime
|
Long
|
イベントの時間(ミリス バージョン 2.8 でのイベント時間) |
CamelHazelcastListenerType
|
文字列
|
map consumer sets here "instancelistener" Version 2.8 |
CamelHazelcastListenerActionn
|
文字列
|
イベントのタイプ:ここでは を 追加 または 削除 します。 バージョン 2.8 |
CamelHazelcastInstanceHost
|
文字列
|
インスタンス バージョン 2.8のホスト名 |
CamelHazelcastInstancePort
|
整数
|
インスタンスの バージョン 2.8 のポート番号 |
hazelcast リファレンスの使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
<bean id="hazelcastLifecycle" class="com.hazelcast.core.LifecycleService"
factory-bean="hazelcastInstance" factory-method="getLifecycleService"
destroy-method="shutdown" />
<bean id="config" class="com.hazelcast.config.Config">
<constructor-arg type="java.lang.String" value="HZ.INSTANCE" />
</bean>
<bean id="hazelcastInstance" class="com.hazelcast.core.Hazelcast" factory-method="newHazelcastInstance">
<constructor-arg type="com.hazelcast.config.Config" ref="config"/>
</bean>
<camelContext xmlns="http://camel.apache.org/schema/spring">
<route id="testHazelcastInstanceBeanRefPut">
<from uri="direct:testHazelcastInstanceBeanRefPut"/>
<setHeader headerName="CamelHazelcastOperationType">
<constant>put</constant>
</setHeader>
<to uri="hazelcast:map:testmap?hazelcastInstanceName=HZ.INSTANCE"/>
</route>
<route id="testHazelcastInstanceBeanRefGet">
<from uri="direct:testHazelcastInstanceBeanRefGet" />
<setHeader headerName="CamelHazelcastOperationType">
<constant>get</constant>
</setHeader>
<to uri="hazelcast:map:testmap?hazelcastInstanceName=HZ.INSTANCE"/>
<to uri="seda:out" />
</route>
</camelContext>
インスタンス別 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
<bean id="hazelcastInstance" class="com.hazelcast.core.Hazelcast"
factory-method="newHazelcastInstance" />
<bean id="hazelcastLifecycle" class="com.hazelcast.core.LifecycleService"
factory-bean="hazelcastInstance" factory-method="getLifecycleService"
destroy-method="shutdown" />
<camelContext xmlns="http://camel.apache.org/schema/spring">
<route id="testHazelcastInstanceBeanRefPut">
<from uri="direct:testHazelcastInstanceBeanRefPut"/>
<setHeader headerName="CamelHazelcastOperationType">
<constant>put</constant>
</setHeader>
<to uri="hazelcast:map:testmap?hazelcastInstance=#hazelcastInstance"/>
</route>
<route id="testHazelcastInstanceBeanRefGet">
<from uri="direct:testHazelcastInstanceBeanRefGet" />
<setHeader headerName="CamelHazelcastOperationType">
<constant>get</constant>
</setHeader>
<to uri="hazelcast:map:testmap?hazelcastInstance=#hazelcastInstance"/>
<to uri="seda:out" />
</route>
</camelContext>
hazelcast インスタンスを OSGI サービスとして公開 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
OSGI コンテナーで動作し、同じコンテナーのすべてのバンドルで hazelcast のインスタンスを 1 つ使用する場合。キャッシュの必要なキャッシュは、hazelcast エンドポイントでサービスを参照することで、インスタンスを OSGI サービスおよびバンドルとして公開できます。
バンドル A はインスタンスを作成し、OSGI サービスとして公開します。 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
<bean id="config" class="com.hazelcast.config.FileSystemXmlConfig">
<argument type="java.lang.String" value="${hazelcast.config}"/>
</bean>
<bean id="hazelcastInstance" class="com.hazelcast.core.Hazelcast" factory-method="newHazelcastInstance">
<argument type="com.hazelcast.config.Config" ref="config"/>
</bean>
<!-- publishing the hazelcastInstance as a service -->
<service ref="hazelcastInstance" interface="com.hazelcast.core.HazelcastInstance" />
バンドル B は インスタンスを使用します。 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
<!-- referencing the hazelcastInstance as a service -->
<reference ref="hazelcastInstance" interface="com.hazelcast.core.HazelcastInstance" />
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<route id="testHazelcastInstanceBeanRefPut">
<from uri="direct:testHazelcastInstanceBeanRefPut"/>
<setHeader headerName="CamelHazelcastOperationType">
<constant>put</constant>
</setHeader>
<to uri="hazelcast:map:testmap?hazelcastInstance=#hazelcastInstance"/>
</route>
<route id="testHazelcastInstanceBeanRefGet">
<from uri="direct:testHazelcastInstanceBeanRefGet" />
<setHeader headerName="CamelHazelcastOperationType">
<constant>get</constant>
</setHeader>
<to uri="hazelcast:map:testmap?hazelcastInstance=#hazelcastInstance"/>
<to uri="seda:out" />
</route>
</camelContext>