第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プロデューサーはGET、PUT、REMOVE、およびCLEAR操作を使用します。ローカルプロデューサーはレプリケートされたキャッシュまたは分散キャッシュでもサポートされます。remote-camel-producer: リモートクライアントサーバーモードでは、Camel プロデューサーは Hot Rod を使用してメッセージを送信できます。
Camel を用いて JBoss Data Grid を実行するには、以下の
camel-jbossdatagrid 依存関係を pom.xml ファイルに追加する必要があります。
注記
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]
infinispan://hostname?[options]
URI オプション
プロデューサーはメッセージを作成し、レジストリーで設定されたローカルの JBoss Data Grid キャッシュまたはリモートキャッシュ (Hot Rod プロトコルを使用) へメッセージを送信できます。cacheContainer が存在する場合、キャッシュはローカルになります。存在しない場合は、キャッシュは提供されたホスト名/ポートを使用して、リモートキャッシュへの接続を試みます。
コンシューマーは、レジストリーからアクセスできるローカルの JBoss Data Grid キャッシュからイベントをリッスンします。
| 名前 | デフォルト値 | タイプ | コンテキスト | 説明 |
|---|---|---|---|---|
| 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_CREATED、CACHE_ENTRY_REMOVED、および CACHE_ENTRY_MODIFIED のみです。 |
| 名前 | デフォルト値 | タイプ | コンテキスト | 説明 |
|---|---|---|---|---|
| CamelInfinispanCacheName | null | 文字列 | 共有 | 操作またはイベントに参加しているキャッシュ。 |
| CamelInfinispanOperation | PUT | 文字列 | プロデューサー | CamelInfinispanOperationPut、CamelInfinispanOperationGet、CamelInfinispanOperationRemove、および CamelInfinispanOperationClear を実行する操作。 |
| CamelInfinispanKey | null | オブジェクト | 共有 | 操作を実行するキーまたはイベントを生成するキー。 |
| CamelInfinispanValue | null | オブジェクト | プロデューサー | 操作に使用する値。 |
| CamelInfinispanOperationResult | null | オブジェクト | プロデューサー | 操作の結果。 |
| CamelInfinispanEventType | null | 文字列 | コンシューマー | 受信されたイベントのタイプ。可能な値は org.infinispan.notifications.cachelistener.event.Event.Type で定義されます。 |
| CamelInfinispanIsPre | null | ブール値 | コンシューマー | Infinispan は各操作に対して 2 つのイベントを発火します (イベントの前とイベントの後)。 |