第5章 Apache Camel を用いた Red Hat JBoss Data Grid の実行


Apache Camel はオープンソースの統合およびルーティングシステムです。さまざまなソースから異なる宛先へメッセージを送信できるようにし、プロトコルやデータタイプに関わらず、同じ API を使用してさまざまなシステムと対話できる統合フレームワークを提供します。Red Hat JBoss Data Grid および Red Hat JBoss Fuse に Camel を使用すると、接続性を追加するさまざまなトランスポートや API が提供され、大型のエンタープライズアプリケーションの統合が簡素化されます。
JBoss Data Grid は、特に Ehcache の置き換えで JBoss Fuse の Camel ルートにおけるキャッシングをサポートします。JBoss Data Grid は、埋め込みキャッシュ (ローカルまたはクラスター化) または Camel ルートのリモートキャッシュとしてサポートされます。

5.1. camel-jbossdatagrid コンポーネント

Red Hat JBoss Data Grid の camel-jbossdatagrid コンポーネントには、以下の機能が含まれています。
  • ローカル Camel コンシューマー

    キャッシュ変更通知を受け取り、処理のために送信します。同期または非同期で実行でき、レプリケートされたキャッシュまたは分散キャッシュでもサポートされます。

  • ローカル Camel プロデューサー

    プロデューサーはメッセージを作成し、エンドポイントへ送信します。camel-jbossdatagrid プロデューサーは GETPUTREMOVE、および CLEAR 操作を使用します。ローカルプロデューサーはレプリケートされたキャッシュまたは分散キャッシュでもサポートされます。

  • リモート Camel プロデューサー

    リモートクライアントサーバーモードでは、Camel プロデューサーは Hot Rod を使用してメッセージを送信できます。

  • リモート Camel コンシューマー

    クライアントサーバーモードでは、キャッシュ変更通知を受け取り、それを処理のために送信します。イベントは非同期で処理されます。

Camel を用いて JBoss Data Grid を実行するには、以下の camel-jbossdatagrid 依存関係を pom.xml ファイルに追加する必要があります。
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-jbossdatagrid</artifactId>
    <version>7.0.0.ER4-redhat-1</version>
    <!-- use the same version as your JBoss Data Grid version -->
</dependency>
Copy to Clipboard Toggle word wrap

注記

camel-jbossdatagrid コンポーネントは、JBoss Data Grid に同梱されていますが、JBoss Fuse 6.1 や JBoss Fuse Service Works 6.0 ディストリビューションには含まれていません。
Camel コンポーネントは Camel の主な拡張ポイントです。URI で使用される名前に関連付けられ、エンドポイントのファクトリーとして動作します。たとえば、FileComponent は URI では file と呼ばれ、FileEndpoints を作成します。
URI の形式

camel-jbossdatagrid には以下の URI 形式が使用されます。

infinispan://hostname?[options]
Copy to Clipboard Toggle word wrap
URI オプション

プロデューサーはメッセージを作成し、レジストリーで設定されたローカルまたはリモートの JBoss Data Grid キャッシュへメッセージを送信できます。cacheContainer が存在する場合、cacheContainer インスタンスが DefaultCacheManager または RemoteCacheManager であるかによってキャッシュがローカルまたはリモートになります。存在しない場合は、指定のホスト名やポートを使用してリモートキャッシュへの接続を試みます。

コンシューマーは、レジストリーからアクセスできるローカルの JBoss Data Grid キャッシュからイベントをリッスンします。
Expand
表5.1 URI オプション
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,...
Copy to Clipboard Toggle word wrap
sync true ブール値 コンシューマー デフォルトでは、コンシューマーはキャッシュ操作を処理する同じスレッドによって同期的に通知を受け取ります。リモート HotRod リスナーは非同期の通知のみをサポートします。
clustered false ブール値 コンシューマー デフォルトでは、コンシューマーはローカルイベントのみを受信します。このオプションを使用すると、コンシューマーはクラスターの他のノードからのイベントもリッスンします。クラスター化されたリスナーに利用できるイベントは CACHE_ENTRY_CREATEDCACHE_ENTRY_REMOVED、および CACHE_ENTRY_MODIFIED のみです。
Camel の操作

使用できる操作とヘッダー情報のリストは次のとおりです。

Expand
表5.2 Put 操作
操作名 コンテキスト 説明 必要なヘッダー 任意のヘッダー 結果のヘッダー
CamelInfinispanOperationPut 埋め込み/リモート キーと値のペアをキャッシュに追加し、オプションでエクスパレーションを指定します。 CamelInfinispanKeyCamelInfinispanValue CamelInfinispanLifespanTimeCamelInfinispanLifespanTimeUnitCamelInfinispanMaxIdleTimeCamelInfinispanMaxIdleTimeUnitCamelInfinispanIgnoreReturnValues CamelInfinispanOperationResult
CamelInfinispanOperationPutAsync 非同期的にキーと値のペアをキャッシュに追加し、オプションでエクスパレーションを指定します。
CamelInfinispanOperationPutIfAbsent 存在しない場合にキーと値のペアをキャッシュに追加し、オプションでエクスパレーションを指定します。
CamelInfinispanOperationPutIfAbsentAsync 存在しない場合にキーと値のペアを非同期的にキャッシュへ追加し、オプションでエクスパレーションを指定します。
Expand
表5.3 Put All 操作
操作名 コンテキスト 説明 必要なヘッダー 任意のヘッダー 結果のヘッダー
CamelInfinispanOperationPutAll 埋め込み/リモート 複数のエントリーをキャッシュに追加します (オプションでエクスパレーションを指定します)。 CamelInfinispanMap CamelInfinispanLifespanTimeCamelInfinispanLifespanTimeUnitCamelInfinispanMaxIdleTimeCamelInfinispanMaxIdleTimeUnit  
CamelInfinispanOperationPutAllAsync 非同期的に複数のエントリーをキャッシュに追加します (オプションでエクスパレーションを指定します)。  
Expand
表5.4 Get 操作
操作名 コンテキスト 説明 必要なヘッダー 任意のヘッダー 結果のヘッダー
CamelInfinispanOperationGet 埋め込み/リモート 特定のキーに関連する値をキャッシュから取得します。 CamelInfinispanKey   
Expand
表5.5 Contains Key 操作
操作名 コンテキスト 説明 必要なヘッダー 任意のヘッダー 結果のヘッダー
CamelInfinispanOperationContainsKey 埋め込み/リモート キャッシュに特定のキーが含まれるかどうかを判断します。 CamelInfinispanKey CamelInfinispanOperationResult
Expand
表5.6 Contains Value 操作
操作名 コンテキスト 説明 必要なヘッダー 任意のヘッダー 結果のヘッダー
CamelInfinispanOperationContainsValue 埋め込み/リモート キャッシュに特定の値が含まれるかどうかを判断します。 CamelInfinispanKey   
Expand
表5.7 Remove 操作
操作名 コンテキスト 説明 必要なヘッダー 任意のヘッダー 結果のヘッダー
CamelInfinispanOperationRemove 埋め込み/リモート キャッシュからエントリーを削除します (オプションで、指定の値と一致した場合のみ削除します)。 CamelInfinispanKey CamelInfinispanValue CamelInfinispanOperationResult
CamelInfinispanOperationRemoveAsync 非同期的にキャッシュからエントリーを削除します (オプションで、指定の値と一致した場合のみ削除します)。
Expand
表5.8 Replace 操作
操作名 コンテキスト 説明 必要なヘッダー 任意のヘッダー 結果のヘッダー
CamelInfinispanOperationReplace 埋め込み/リモート キャッシュのエントリーを条件的に置き換えます (オプションでエクスパレーションを指定します)。 CamelInfinispanKeyCamelInfinispanValueCamelInfinispanOldValue CamelInfinispanLifespanTimeCamelInfinispanLifespanTimeUnitCamelInfinispanMaxIdleTimeCamelInfinispanMaxIdleTimeUnitCamelInfinispanIgnoreReturnValues CamelInfinispanOperationResult
CamelInfinispanOperationReplaceAsync キャッシュのエントリーを非同期的かつ条件的に置き換えます (オプションでエクスパレーションを指定します)。
Expand
表5.9 Clear 操作
操作名 コンテキスト 説明 必要なヘッダー 任意のヘッダー 結果のヘッダー
CamelInfinispanOperationClear 埋め込み/リモート キャッシュを消去します。    
Expand
表5.10 Size 操作
操作名 コンテキスト 説明 必要なヘッダー 任意のヘッダー 結果のヘッダー
CamelInfinispanOperationSize 埋め込み/リモート キャッシュにあるエントリーの数を返します。 CamelInfinispanOperationResult
Expand
表5.11 Query 操作
操作名 コンテキスト 説明 必要なヘッダー 任意のヘッダー 結果のヘッダー
CamelInfinispanOperationQuery リモート キャッシュでクエリーを実行します。 CamelInfinispanQueryBuilder CamelInfinispanOperationResult

注記

CamelInfinispanIgnoreReturnValues を取る操作はすべて null を結果として受け取ります。
Expand
表5.12 メッセージヘッダー
Name デフォルト値 タイプ コンテキスト 説明
CamelInfinispanCacheName null 文字列 共有 操作またはイベントに参加しているキャッシュ。
CamelInfinispanMap null マップ プロデューサー CamelInfinispanOperationPutAll 操作の場合に使用されるマップ。
CamelInfinispanKey null オブジェクト 共有 操作を実行するキーまたはイベントを生成するキー。
CamelInfinispanValue null オブジェクト プロデューサー 操作に使用する値。
CamelInfinispanOperationResult null オブジェクト プロデューサー 操作の結果。
CamelInfinispanEventType null 文字列 コンシューマー
ローカルキャッシュリスナー (非クラスター) の場合は次の値の 1 つ: CACHE_ENTRY_ACTIVATEDCACHE_ENTRY_PASSIVATEDCACHE_ENTRY_VISITEDCACHE_ENTRY_LOADEDCACHE_ENTRY_EVICTEDCACHE_ENTRY_CREATEDCACHE_ENTRY_REMOVEDCACHE_ENTRY_MODIFIED
リモート HotRod リスナーの場合は次の値の 1 つ: CLIENT_CACHE_ENTRY_CREATEDCLIENT_CACHE_ENTRY_MODIFIEDCLIENT_CACHE_ENTRY_REMOVEDCLIENT_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 文字列 プロデューサー エントリーの最大アイドル時間の時間単位。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat