第5章 Apache Camel を用いた Red Hat JBoss Data Grid の実行
5.1. camel-jbossdatagrid コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
camel-jbossdatagrid コンポーネントには、以下の機能が含まれています。
- ローカル Camel コンシューマー
キャッシュ変更通知を受け取り、処理のために送信します。同期または非同期で実行でき、レプリケートされたキャッシュまたは分散キャッシュでもサポートされます。
- ローカル Camel プロデューサー
プロデューサーはメッセージを作成し、エンドポイントへ送信します。
camel-jbossdatagridプロデューサーはGET、PUT、REMOVE、およびCLEAR操作を使用します。ローカルプロデューサーはレプリケートされたキャッシュまたは分散キャッシュでもサポートされます。 - リモート Camel プロデューサー
リモートクライアントサーバーモードでは、Camel プロデューサーは Hot Rod を使用してメッセージを送信できます。
- リモート Camel コンシューマー
クライアントサーバーモードでは、キャッシュ変更通知を受け取り、それを処理のために送信します。イベントは非同期で処理されます。
camel-jbossdatagrid 依存関係を pom.xml ファイルに追加する必要があります。
注記
camel-jbossdatagrid コンポーネントは、JBoss Data Grid に同梱されていますが、JBoss Fuse 6.1 や JBoss Fuse Service Works 6.0 ディストリビューションには含まれていません。
FileComponent は URI では file と呼ばれ、FileEndpoints を作成します。
camel-jbossdatagrid には以下の URI 形式が使用されます。
infinispan://hostname?[options]
infinispan://hostname?[options]
プロデューサーはメッセージを作成し、レジストリーで設定されたローカルまたはリモートの JBoss Data Grid キャッシュへメッセージを送信できます。cacheContainer が存在する場合、cacheContainer インスタンスが DefaultCacheManager または RemoteCacheManager であるかによってキャッシュがローカルまたはリモートになります。存在しない場合は、指定のホスト名やポートを使用してリモートキャッシュへの接続を試みます。
| Name | デフォルト値 | タイプ | コンテキスト | 説明 |
|---|---|---|---|---|
| cacheContainer | null | CacheContainer | 共有 | レジストリーの org.infinispan.manager.CacheContainer への参照。 |
| cacheName | null | 文字列 | 共有 | 使用するキャッシュ名。指定されていないと、デフォルトのキャッシュが使用されます。 |
| command | PUT | 文字列 | プロデューサー | 実行する操作。現在 PUT、GET、REMOVE、および CLEAR のみが値としてサポートされています。 |
| eventTypes | null | Set<String> | コンシューマー |
登録するイベントタイプのコンマ区切りのリスト。デフォルトでは、すべてのイベントタイプをリッスンします。可能な値は
org.infinispan.notifications.cachelistener.event.Event.Type で定義されます。
例:
...?eventTypes=CACHE_ENTRY_EXPIRED,CACHE_ENTRY_EVICTED,...
|
| sync | true | ブール値 | コンシューマー | デフォルトでは、コンシューマーはキャッシュ操作を処理する同じスレッドによって同期的に通知を受け取ります。リモート HotRod リスナーは非同期の通知のみをサポートします。 |
| clustered | false | ブール値 | コンシューマー | デフォルトでは、コンシューマーはローカルイベントのみを受信します。このオプションを使用すると、コンシューマーはクラスターの他のノードからのイベントもリッスンします。クラスター化されたリスナーに利用できるイベントは CACHE_ENTRY_CREATED、CACHE_ENTRY_REMOVED、および CACHE_ENTRY_MODIFIED のみです。 |
使用できる操作とヘッダー情報のリストは次のとおりです。
| 操作名 | コンテキスト | 説明 | 必要なヘッダー | 任意のヘッダー | 結果のヘッダー |
|---|---|---|---|---|---|
CamelInfinispanOperationPut | 埋め込み/リモート | キーと値のペアをキャッシュに追加し、オプションでエクスパレーションを指定します。 | CamelInfinispanKey、CamelInfinispanValue | CamelInfinispanLifespanTime、CamelInfinispanLifespanTimeUnit、CamelInfinispanMaxIdleTime、CamelInfinispanMaxIdleTimeUnit、CamelInfinispanIgnoreReturnValues | CamelInfinispanOperationResult |
CamelInfinispanOperationPutAsync | 非同期的にキーと値のペアをキャッシュに追加し、オプションでエクスパレーションを指定します。 | ||||
CamelInfinispanOperationPutIfAbsent | 存在しない場合にキーと値のペアをキャッシュに追加し、オプションでエクスパレーションを指定します。 | ||||
CamelInfinispanOperationPutIfAbsentAsync | 存在しない場合にキーと値のペアを非同期的にキャッシュへ追加し、オプションでエクスパレーションを指定します。 |
| 操作名 | コンテキスト | 説明 | 必要なヘッダー | 任意のヘッダー | 結果のヘッダー |
|---|---|---|---|---|---|
CamelInfinispanOperationPutAll | 埋め込み/リモート | 複数のエントリーをキャッシュに追加します (オプションでエクスパレーションを指定します)。 | CamelInfinispanMap | CamelInfinispanLifespanTime、CamelInfinispanLifespanTimeUnit、 CamelInfinispanMaxIdleTime、CamelInfinispanMaxIdleTimeUnit | |
CamelInfinispanOperationPutAllAsync | 非同期的に複数のエントリーをキャッシュに追加します (オプションでエクスパレーションを指定します)。 |
| 操作名 | コンテキスト | 説明 | 必要なヘッダー | 任意のヘッダー | 結果のヘッダー |
|---|---|---|---|---|---|
CamelInfinispanOperationGet | 埋め込み/リモート | 特定のキーに関連する値をキャッシュから取得します。 | CamelInfinispanKey |
| 操作名 | コンテキスト | 説明 | 必要なヘッダー | 任意のヘッダー | 結果のヘッダー |
|---|---|---|---|---|---|
CamelInfinispanOperationContainsKey | 埋め込み/リモート | キャッシュに特定のキーが含まれるかどうかを判断します。 | CamelInfinispanKey | CamelInfinispanOperationResult |
| 操作名 | コンテキスト | 説明 | 必要なヘッダー | 任意のヘッダー | 結果のヘッダー |
|---|---|---|---|---|---|
CamelInfinispanOperationContainsValue | 埋め込み/リモート | キャッシュに特定の値が含まれるかどうかを判断します。 | CamelInfinispanKey |
| 操作名 | コンテキスト | 説明 | 必要なヘッダー | 任意のヘッダー | 結果のヘッダー |
|---|---|---|---|---|---|
CamelInfinispanOperationRemove | 埋め込み/リモート | キャッシュからエントリーを削除します (オプションで、指定の値と一致した場合のみ削除します)。 | CamelInfinispanKey | CamelInfinispanValue | CamelInfinispanOperationResult |
CamelInfinispanOperationRemoveAsync | 非同期的にキャッシュからエントリーを削除します (オプションで、指定の値と一致した場合のみ削除します)。 |
| 操作名 | コンテキスト | 説明 | 必要なヘッダー | 任意のヘッダー | 結果のヘッダー |
|---|---|---|---|---|---|
CamelInfinispanOperationReplace | 埋め込み/リモート | キャッシュのエントリーを条件的に置き換えます (オプションでエクスパレーションを指定します)。 | CamelInfinispanKey、CamelInfinispanValue、CamelInfinispanOldValue | CamelInfinispanLifespanTime、CamelInfinispanLifespanTimeUnit、CamelInfinispanMaxIdleTime、CamelInfinispanMaxIdleTimeUnit、CamelInfinispanIgnoreReturnValues | CamelInfinispanOperationResult |
CamelInfinispanOperationReplaceAsync | キャッシュのエントリーを非同期的かつ条件的に置き換えます (オプションでエクスパレーションを指定します)。 |
| 操作名 | コンテキスト | 説明 | 必要なヘッダー | 任意のヘッダー | 結果のヘッダー |
|---|---|---|---|---|---|
CamelInfinispanOperationClear | 埋め込み/リモート | キャッシュを消去します。 |
| 操作名 | コンテキスト | 説明 | 必要なヘッダー | 任意のヘッダー | 結果のヘッダー |
|---|---|---|---|---|---|
CamelInfinispanOperationSize | 埋め込み/リモート | キャッシュにあるエントリーの数を返します。 | CamelInfinispanOperationResult |
| 操作名 | コンテキスト | 説明 | 必要なヘッダー | 任意のヘッダー | 結果のヘッダー |
|---|---|---|---|---|---|
CamelInfinispanOperationQuery | リモート | キャッシュでクエリーを実行します。 | CamelInfinispanQueryBuilder | CamelInfinispanOperationResult |
注記
CamelInfinispanIgnoreReturnValues を取る操作はすべて null を結果として受け取ります。
| Name | デフォルト値 | タイプ | コンテキスト | 説明 |
|---|---|---|---|---|
| CamelInfinispanCacheName | null | 文字列 | 共有 | 操作またはイベントに参加しているキャッシュ。 |
| CamelInfinispanMap | null | マップ | プロデューサー | CamelInfinispanOperationPutAll 操作の場合に使用されるマップ。 |
| CamelInfinispanKey | null | オブジェクト | 共有 | 操作を実行するキーまたはイベントを生成するキー。 |
| CamelInfinispanValue | null | オブジェクト | プロデューサー | 操作に使用する値。 |
| CamelInfinispanOperationResult | null | オブジェクト | プロデューサー | 操作の結果。 |
| CamelInfinispanEventType | null | 文字列 | コンシューマー |
ローカルキャッシュリスナー (非クラスター) の場合は次の値の 1 つ:
CACHE_ENTRY_ACTIVATED、CACHE_ENTRY_PASSIVATED、CACHE_ENTRY_VISITED、CACHE_ENTRY_LOADED、CACHE_ENTRY_EVICTED、CACHE_ENTRY_CREATED、 CACHE_ENTRY_REMOVED、CACHE_ENTRY_MODIFIED
リモート HotRod リスナーの場合は次の値の 1 つ:
CLIENT_CACHE_ENTRY_CREATED、CLIENT_CACHE_ENTRY_MODIFIED、CLIENT_CACHE_ENTRY_REMOVED、CLIENT_CACHE_FAILOVER
|
| CamelInfinispanIsPre | null | ブール値 | コンシューマー | ローカルの非クラスター化リスナーが使用されると、Infinispan は各操作に対して操作の前と後に 1 つずつ 2 つのイベントを発火します。クラスター化リスナーおよびリモート HotRod リスナーの場合は、Infinispan は操作の後に 1 つのイベントのみを発火します。 |
| CamelInfinispanQueryBuilder | null | InfinispanQueryBuilder | プロデューサー | InfinispanQueryBuilder のインスタンスで、キャッシュで実行されるクエリーを build() 内で定義します。 |
| CamelInfinispanLifespanTime | null | long | プロデューサー | キャッシュ内の値のライフスパン時間。負の値は無限として解釈されます。 |
| CamelInfinispanTimeUnit | null | 文字列 | プロデューサー | エントリーのライフスパン時間の時間単位。 |
| CamelInfinispanMaxIdleTime | null | long | プロデューサー | エントリーがアイドル状態でいられる最大期間。この期間以降は期限切れと見なされます。 |
| CamelInfinispanMaxIdleTimeUnit | null | 文字列 | プロデューサー | エントリーの最大アイドル時間の時間単位。 |