第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 コンポーネントには、以下の機能が含まれています。
  • local-camel-consumer: キャッシュ変更通知を受け取り、処理のために送信します。同期または非同期で実行でき、レプリケートされたキャッシュまたは分散キャッシュでもサポートされます。
  • local-camel-producer: プロデューサーはメッセージを作成し、エンドポイントへ送信します。camel-jbossdatagrid プロデューサーは GETPUTREMOVE、および CLEAR 操作を使用します。ローカルプロデューサーはレプリケートされたキャッシュまたは分散キャッシュでもサポートされます。
  • remote-camel-producer: リモートクライアントサーバーモードでは、Camel プロデューサーは Hot Rod を使用してメッセージを送信できます。
Camel を用いて JBoss Data Grid を実行するには、以下の camel-jbossdatagrid 依存関係を pom.xml ファイルに追加する必要があります。
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-jbossdatagrid</artifactId>
    <version>6.4.0.Final-redhat-3</version>
    <!-- use the same version as your JBoss Data Grid version -->
</dependency>

注記

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]
URI オプション

プロデューサーはメッセージを作成し、レジストリーで設定されたローカルの JBoss Data Grid キャッシュまたはリモートキャッシュ (Hot Rod プロトコルを使用) へメッセージを送信できます。cacheContainer が存在する場合、キャッシュはローカルになります。存在しない場合は、キャッシュは提供されたホスト名/ポートを使用して、リモートキャッシュへの接続を試みます。

コンシューマーは、レジストリーからアクセスできるローカルの JBoss Data Grid キャッシュからイベントをリッスンします。

表5.1 URI オプション

名前 デフォルト値 タイプ コンテキスト 説明
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 で定義されます。
sync true ブール値 コンシューマー デフォルトでは、コンシューマーはキャッシュ操作を処理する同じスレッドによって同期的に通知を受け取ります。
clustered false ブール値 コンシューマー デフォルトでは、コンシューマーはローカルイベントのみを受信します。このオプションを使用すると、コンシューマーはクラスターの他のノードからのイベントもリッスンします。クラスター化されたリスナーに利用できるイベントは CACHE_ENTRY_CREATEDCACHE_ENTRY_REMOVED、および CACHE_ENTRY_MODIFIED のみです。

表5.2 メッセージヘッダー

名前 デフォルト値 タイプ コンテキスト 説明
CamelInfinispanCacheName null 文字列 共有 操作またはイベントに参加しているキャッシュ。
CamelInfinispanOperation PUT 文字列 プロデューサー CamelInfinispanOperationPutCamelInfinispanOperationGetCamelInfinispanOperationRemove、および CamelInfinispanOperationClear を実行する操作。
CamelInfinispanKey null オブジェクト 共有 操作を実行するキーまたはイベントを生成するキー。
CamelInfinispanValue null オブジェクト プロデューサー 操作に使用する値。
CamelInfinispanOperationResult null オブジェクト プロデューサー 操作の結果。
CamelInfinispanEventType null 文字列 コンシューマー 受信されたイベントのタイプ。可能な値は org.infinispan.notifications.cachelistener.event.Event.Type で定義されます。
CamelInfinispanIsPre null ブール値 コンシューマー Infinispan は各操作に対して 2 つのイベントを発火します (イベントの前とイベントの後)。