Ignite がデータ グリッド内のオブジェクトのプロパティの変更をリッスンし、そのオブジェクトに対して何らかの操作を実行する必要があるユース ケースを調査しています。パフォーマンスのために、データがあるノードと同じノードで処理を実行したいと考えています。
オブジェクトのプロパティが特定の値に変更されたときにイベントを取得するにはどうすればよいですか (たとえば、オブジェクト ' ' には ' ' から ' 'に設定され
X
たプロパティ ' ' があります)、イベントのみがノードから取得されるようにするにはどうすればよいですかオブジェクトはどこに住んでいますか?state
scheduled
created
イベントを取得して処理を開始したときに、処理が完了するまで (つまり、イベントが取得されるとすぐにトランザクションが開始されるまで) 誰もオブジェクトを変更しない (読み取りのみが許可される) ことを確認するにはどうすればよいですか?
処理コードがすべてのノードにデプロイされ (処理はステートレス)、ローカル データでのみ動作するようにするにはどうすればよいですか (データ オブジェクトとコードの間にハード リンクがない、つまり、処理コードが更新された場合)。未来、オブジェクトは手付かずのままです)
ドキュメントから得たものは次のとおりです。
// Local listener that listenes to local events.
IgnitePredicate<CacheEvent> locLsnr = evt -> {
// CODE
return result;
};
// Subscribe to specified cache events occuring on local node.
ignite.events().localListen(locLsnr,
EventType.EVT_CACHE_OBJECT_PUT);
CODE
ブロックで;state
' ' の変更を確認する必要がありevt.newValue()
ます。それをもっと早く行うことはできませんか? すなわち。何とかlocalListenへのパラメータとして?ブロックでは、
CODE
結果を返すまでオブジェクトはロックされていますか? 言い換えれば、誰もオブジェクトを変更できず、オブジェクトを安全に変更できると確信しているのはここですか? IMOハンドラークラスではなく、「述語」定義でそれを行うのは奇妙な場所です。
スヴェン