第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>
Copy to Clipboard Toggle word wrap

URI 形式

hazelcast:[ map | multimap | queue | topic | seda | set | atomicvalue | instance | list]:cachename[?options]
Copy to Clipboard Toggle word wrap

オプション

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");
Copy to Clipboard Toggle word wrap

put の例:

Java DSL の場合
from("direct:put")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.PUT_OPERATION))
.toF("hazelcast:%sfoo", HazelcastConstants.MAP_PREFIX);
Copy to Clipboard Toggle word wrap
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>
Copy to Clipboard Toggle word wrap

get の例:

Java DSL の場合
from("direct:get")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.GET_OPERATION))
.toF("hazelcast:%sfoo", HazelcastConstants.MAP_PREFIX)
.to("seda:out");
Copy to Clipboard Toggle word wrap
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>
Copy to Clipboard Toggle word wrap

更新のサンプル:

Java DSL の場合
from("direct:update")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.UPDATE_OPERATION))
.toF("hazelcast:%sfoo", HazelcastConstants.MAP_PREFIX);
Copy to Clipboard Toggle word wrap
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>
Copy to Clipboard Toggle word wrap

削除のサンプル:

Java DSL の場合
from("direct:delete")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.DELETE_OPERATION))
.toF("hazelcast:%sfoo", HazelcastConstants.MAP_PREFIX);
Copy to Clipboard Toggle word wrap
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>
Copy to Clipboard Toggle word wrap

クエリーのサンプル

Java DSL の場合
from("direct:query")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.QUERY_OPERATION))
.toF("hazelcast:%sfoo", HazelcastConstants.MAP_PREFIX)
.to("seda:out");
Copy to Clipboard Toggle word wrap
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>
Copy to Clipboard Toggle word wrap
クエリー操作 Hazelcast は、分散マップをクエリーする構文のような SQL を提供します。
String q1 = "bar > 1000";
template.sendBodyAndHeader("direct:query", null, HazelcastConstants.QUERY, q1);
Copy to Clipboard Toggle word wrap

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!");
Copy to Clipboard Toggle word wrap

マルチマップの使用

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");
Copy to Clipboard Toggle word wrap

put の例:

Java DSL の場合
from("direct:put")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.PUT_OPERATION))
.toF("hazelcast:%sfoo", HazelcastConstants.MAP_PREFIX);
Copy to Clipboard Toggle word wrap
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>
Copy to Clipboard Toggle word wrap

get の例:

Java DSL の場合
from("direct:get")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.GET_OPERATION))
.toF("hazelcast:%sfoo", HazelcastConstants.MAP_PREFIX)
.to("seda:out");
Copy to Clipboard Toggle word wrap
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>
Copy to Clipboard Toggle word wrap

更新のサンプル:

Java DSL の場合
from("direct:update")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.UPDATE_OPERATION))
.toF("hazelcast:%sfoo", HazelcastConstants.MAP_PREFIX);
Copy to Clipboard Toggle word wrap
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>
Copy to Clipboard Toggle word wrap

削除のサンプル:

Java DSL の場合
from("direct:delete")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.DELETE_OPERATION))
.toF("hazelcast:%sfoo", HazelcastConstants.MAP_PREFIX);
Copy to Clipboard Toggle word wrap
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>
Copy to Clipboard Toggle word wrap

クエリーのサンプル

Java DSL の場合
from("direct:query")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.QUERY_OPERATION))
.toF("hazelcast:%sfoo", HazelcastConstants.MAP_PREFIX)
.to("seda:out");
Copy to Clipboard Toggle word wrap
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>
Copy to Clipboard Toggle word wrap
クエリー操作 Hazelcast は、分散マップをクエリーする構文のような SQL を提供します。
String q1 = "bar > 1000";
template.sendBodyAndHeader("direct:query", null, HazelcastConstants.QUERY, q1);
Copy to Clipboard Toggle word wrap

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!");
Copy to Clipboard Toggle word wrap

マルチマップの使用

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));
Copy to Clipboard Toggle word wrap
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>
Copy to Clipboard Toggle word wrap

removevalue の例:

Java DSL の場合
from("direct:removevalue")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.REMOVEVALUE_OPERATION))
.toF("hazelcast:%sbar", HazelcastConstants.MULTIMAP_PREFIX);
Copy to Clipboard Toggle word wrap
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>
Copy to Clipboard Toggle word wrap
値を削除するには、メッセージのボディー内で削除する値を指定する必要があります。マルチマップオブジェクト } がある場合は、メッセージボディー内に my-foo の値を削除する必要があります。

get の例:

Java DSL の場合
from("direct:get")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.GET_OPERATION))
.toF("hazelcast:%sbar", HazelcastConstants.MULTIMAP_PREFIX)
.to("seda:out");
Copy to Clipboard Toggle word wrap
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>
Copy to Clipboard Toggle word wrap

削除のサンプル:

Java DSL の場合
from("direct:delete")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.DELETE_OPERATION))
.toF("hazelcast:%sbar", HazelcastConstants.MULTIMAP_PREFIX);
Copy to Clipboard Toggle word wrap
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>
Copy to Clipboard Toggle word wrap
以下を使用して、テストクラスで呼び出しできます。
template.sendBodyAndHeader("direct:[put|get|removevalue|delete]", "my-foo", HazelcastConstants.OBJECT_ID, "4711");
Copy to Clipboard Toggle word wrap

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!");
Copy to Clipboard Toggle word wrap
応答メッセージ内のヘッダー変数:
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);
Copy to Clipboard Toggle word wrap

put の例:

from("direct:put")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.PUT_OPERATION))
.toF("hazelcast:%sbar", HazelcastConstants.QUEUE_PREFIX);
Copy to Clipboard Toggle word wrap

ポーリングのサンプル:

from("direct:poll")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.POLL_OPERATION))
.toF("hazelcast:%sbar", HazelcastConstants.QUEUE_PREFIX);
Copy to Clipboard Toggle word wrap

peek の例:

from("direct:peek")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.PEEK_OPERATION))
.toF("hazelcast:%sbar", HazelcastConstants.QUEUE_PREFIX);
Copy to Clipboard Toggle word wrap

オファーのサンプル:

from("direct:offer")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.OFFER_OPERATION))
.toF("hazelcast:%sbar", HazelcastConstants.QUEUE_PREFIX);
Copy to Clipboard Toggle word wrap

removevalue の例:

from("direct:removevalue")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.REMOVEVALUE_OPERATION))
.toF("hazelcast:%sbar", HazelcastConstants.QUEUE_PREFIX);
Copy to Clipboard Toggle word wrap

キューコンシューマー 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!");
Copy to Clipboard Toggle word wrap

トピックの使用

トピックプロデューサー - to ("hazelcast:topic:foo")

トピックプロデューサーは 1 つの操作(publish)のみを提供します。

公開のサンプル

from("direct:add")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.PUBLISH_OPERATION))
.toF("hazelcast:%sbar", HazelcastConstants.PUBLISH_OPERATION);
Copy to Clipboard Toggle word wrap

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")
Copy to Clipboard Toggle word wrap

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);
Copy to Clipboard Toggle word wrap

get の例:

from("direct:get")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.GET_OPERATION))
.toF("hazelcast:%sbar", HazelcastConstants.LIST_PREFIX)
.to("seda:out");
Copy to Clipboard Toggle word wrap

setvalue の例:

from("direct:set")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.SETVALUE_OPERATION))
.toF("hazelcast:%sbar", HazelcastConstants.LIST_PREFIX);
Copy to Clipboard Toggle word wrap

removevalue の例:

from("direct:removevalue")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.REMOVEVALUE_OPERATION))
.toF("hazelcast:%sbar", HazelcastConstants.LIST_PREFIX);
Copy to Clipboard Toggle word wrap
警告
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!");
Copy to Clipboard Toggle word wrap

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");
Copy to Clipboard Toggle word wrap
Spring DSL の場合:
<route>
   <from uri="direct:start" />
   <to uri="hazelcast:seda:foo" />
</route>
Copy to Clipboard Toggle word wrap

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");
Copy to Clipboard Toggle word wrap
Spring DSL:
<route>
  <from uri="hazelcast:seda:foo" />
  <to uri="mock:result" />
</route>
Copy to Clipboard Toggle word wrap

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);
Copy to Clipboard Toggle word wrap
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>
Copy to Clipboard Toggle word wrap
メッセージボディー内で設定する値を指定します(ここでは 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);
Copy to Clipboard Toggle word wrap
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>
Copy to Clipboard Toggle word wrap
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);
Copy to Clipboard Toggle word wrap
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>
Copy to Clipboard Toggle word wrap
実際の値(インクリメント後)はメッセージのボディー内に提供されます。

デクリメントのサンプル:

Java DSL の場合
from("direct:decrement")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.DECREMENT_OPERATION))
.toF("hazelcast:%sfoo", HazelcastConstants.ATOMICNUMBER_PREFIX);
Copy to Clipboard Toggle word wrap
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>
Copy to Clipboard Toggle word wrap
実際の値(デクリメント後)はメッセージのボディー内に提供されます。

破棄のサンプル

警告
Hazelcast にはバグがあります。そのため、この機能は適切に機能しない可能性があります。1.9.3 で修正されます。
Java DSL の場合
from("direct:destroy")
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.DESTROY_OPERATION))
.toF("hazelcast:%sfoo", HazelcastConstants.ATOMICNUMBER_PREFIX);
Copy to Clipboard Toggle word wrap
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>
Copy to Clipboard Toggle word wrap

クラスターのサポート

警告
このエンドポイントはプロデューサーを提供しません。

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");
Copy to Clipboard Toggle word wrap
各イベントは、メッセージヘッダー内で以下の情報を提供します。
応答メッセージ内のヘッダー変数:
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>
Copy to Clipboard Toggle word wrap

インスタンス別

<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>
Copy to Clipboard Toggle word wrap

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" />
Copy to Clipboard Toggle word wrap

バンドル 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>
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat