24.7. 例
キー/値を名前付きキャッシュに配置します。
from("direct:start") .setHeader(InfinispanConstants.OPERATION).constant(InfinispanOperation.PUT) (1) .setHeader(InfinispanConstants.KEY).constant("123") (2) .to("infinispan:myCacheName&cacheContainer=#cacheContainer"); (3)詳細は以下のようになります。
- 1 - 実行する操作の設定
- 2 - キャッシュ内の要素を識別するために使用されるキーを設定します。
3 - レジストリーから設定済みのキャッシュマネージャー
cacheContainerを使用して、myCacheNameという名前のキャッシュに要素を配置します。エントリーの有効期限が切れる前のライフタイムやアイドル時間を設定し、以下のようにキャッシュからエビクトすることができます。
from("direct:start") .setHeader(InfinispanConstants.OPERATION).constant(InfinispanOperation.GET) .setHeader(InfinispanConstants.KEY).constant("123") .setHeader(InfinispanConstants.LIFESPAN_TIME).constant(100L) (1) .setHeader(InfinispanConstants.LIFESPAN_TIME_UNIT.constant(TimeUnit.MILLISECONDS.toString()) (2) .to("infinispan:myCacheName");
ここで、
- 1 - エントリーの有効期間を設定します。
- 2 - ライフスパンの時間単位を設定します。
クエリー
from("direct:start")
.setHeader(InfinispanConstants.OPERATION, InfinispanConstants.QUERY)
.setHeader(InfinispanConstants.QUERY_BUILDER, new InfinispanQueryBuilder() {
@Override
public Query build(QueryFactory<Query> qf) {
return qf.from(User.class).having("name").like("%abc%").build();
}
})
.to("infinispan:myCacheName?cacheContainer=#cacheManager") ;
ドメインオブジェクトの .proto 記述子は、リモート Data Grid サーバーに登録する必要があります。公式の Infinispan ドキュメントの Remote Query Example を参照してください。
カスタムリスナー
from("infinispan://?cacheContainer=#cacheManager&customListener=#myCustomListener")
.to("mock:result");
myCustomListener のインスタンスが存在し、Camel がレジストリー から検索できるはず です。ユーザーは、org.apache.camel.component.infinispan.remote.InfinispanRemoteCustomListener クラスを拡張し、生成されるクラスに org.infinispan.client.hotrod.annotation パッケージにある @ClientListener でアノテーションを付けることが推奨されます。