2017-11-23 14 views
1

複数のノードのJavaクライアントを使用してHazelcastクラスタに接続しています。Hazelcast:クライアントモードでクラスタごとに1回のみEntryEvictedListenerを実行

HazelcastClient.newHazelcastClient(cfg) 

EntryEvictedListenerをクラスタごとに1回だけ実行する必要があります。 デフォルトでは、接続されているすべてのクライアントで実行されます。

が埋め込まHazelcast(Time Based Eviction in Hazelcast)で、この目標を達成する方法を見つけましたが、

map.addLocalEntryListener(...) 

がクライアントに許可されていないように見えます。

クライアントを使用してクラスターごとに1回だけ除去リスナーを実行する方法はありますか?

答えて

1

残念ながら。 localは基本的なパーティション化スキームに直接接続されているため、リスナーはクラスタノード上で実行する必要があります。あなたは退去イベントで何をしたいのですか、多分それを別の方法で達成することができます。

+0

ありがとうございます。 IMap TTLイベントは、いくつかの集約ウィンドウ時間を制限するのに非常に便利です - エラーメッセージが来たら、それはcounter = 1のマップに保存され、後で同様のメッセージがそのマップのカウンタを更新するだけです。カウンターに基づいていません。 確かに我々は異なるアプローチを使用することができますが、それぞれが欠点を持っています 1.いくつかの背景のクラスタ全体のスケジューラを持っている - しかし、それはそれぞれのメッセージ 2.ストアを処理するために、CPU使用率、より多くのコードおよび多くのコーナー例のぞき見を持っていますエラー到着時にカウンタをチェックする - ここでの計算はあまり頻繁に実行される – Kirill

+0

3.データと処理ノードのライフサイクルを別々にしたいので、埋め込みHazelcastの代わりにクライアントを使用しています – Kirill

+0

申し訳ありませんが、メッセージの前に? – noctarius

関連する問題