第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]

オプション

Expand
名前
必須
説明
hazelcastInstance
いいえ
Camel 2.14: hazelcast エンドポイントに使用できる hazelcast インスタンス参照。インスタンス参照を指定しない場合、Camel は camel-hazelcast インスタンスからデフォルトの hazelcast インスタンスを使用します。
hazelcastInstanceName
No
defaultOperation
-1
Camel 2.15: 操作ヘッダーが提供されていない場合に使用するデフォルトの操作を指定します。
警告
2 番目の接頭辞を使用して、使用するデータストアのタイプを定義する必要があります。

セクション

  1. マップの使用
  2. キューの使用
  3. トピックの使用
  4. リストの使用
  5. sedaの使用
  6. クラスター サポート(インスタンス)の使用

マップの使用

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 からの定数を使用できます。
リクエストメッセージのヘッダー変数:
Expand
名前 タイプ 説明
hazelcast.operation.type 文字列 有効な値は put、delete、get、update、query です。
hazelcast.objectId 文字列 キャッシュ内にオブジェクトを保存/検索するオブジェクト ID (クエリー操作には必要ありません)
警告
Apache Camel 2.8 でヘッダー変数が変更されました。
Expand
名前 タイプ 説明
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 コンシューマーを使用できます。、updatedeleteenvict の 4 つのイベントがあります。イベントタイプはhazelcast.listener.actionヘッダー変数に保存されます。map コンシューマーは、これらの変数内に追加情報を提供します。
応答メッセージ内のヘッダー変数:
Expand
名前 タイプ 説明
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 でヘッダー変数が変更されました。
Expand
名前 タイプ 説明
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)を提供します。
リクエストメッセージのヘッダー変数:
Expand
名前 タイプ 説明
hazelcast.operation.type 文字列 有効な値は put、get、removevalue、delete です。
hazelcast.objectId 文字列 キャッシュ内にオブジェクトを保存/検索するオブジェクト ID
警告
Apache Camel 2.8 でヘッダー変数が変更されました。
Apache Camel 2.8 でのリクエストメッセージのヘッダー変数:
Expand
名前 タイプ 説明
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 コンシューマーを使用できます。、updatedeleteenvict の 4 つのイベントがあります。イベントタイプはhazelcast.listener.actionヘッダー変数に保存されます。map コンシューマーは、これらの変数内に追加情報を提供します。
応答メッセージ内のヘッダー変数:
Expand
名前 タイプ 説明
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 でヘッダー変数が変更されました。
Expand
名前 タイプ 説明
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)を提供します。
リクエストメッセージのヘッダー変数:
Expand
名前 タイプ 説明
hazelcast.operation.type 文字列 有効な値は put、get、removevalue、delete です。
hazelcast.objectId 文字列 キャッシュ内にオブジェクトを保存/検索するオブジェクト ID
警告
Apache Camel 2.8 でヘッダー変数が変更されました。
Expand
名前 タイプ 説明
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!");
応答メッセージ内のヘッダー変数:
Expand
名前 タイプ 説明
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 でヘッダー変数が変更されました。
Expand
名前 タイプ 説明
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 プロデューサーは操作を提供しません。指定のキューにデータのみを送信します。
Expand
名前 デフォルト値 説明
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 コンシューマーは操作を提供しません。指定のキューからデータのみを取得します。
Expand
名前 デフォルト値 説明
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 です。
リクエストメッセージのヘッダー変数:
Expand
名前 タイプ 説明
hazelcast.operation.type 文字列 有効な値は、setvalue、get、increase、decrease、destroy です。
警告
Apache Camel 2.8 でヘッダー変数が変更されました。
Expand
名前 タイプ 説明
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");
各イベントは、メッセージヘッダー内で以下の情報を提供します。
応答メッセージ内のヘッダー変数:
Expand
名前 タイプ 説明
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 でヘッダー変数が変更されました。
Expand
名前 タイプ 説明
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>
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る