私はコヒーレンス・キャッシュにアクセスする単一のJAVAプロセスが存在するいくつかのノード(最大30個)で構成されたレプリケート・クラスタを持ち、エージェントの作成と更新の両方にmap.invoke(key、agent)メソッドを使用します。作成および更新は、処理方法の値を設定して実行されます。私は更新をすることによって行われた場合に気づいOracleの一貫性:特定のノードでエージェントを強制的に呼び出す方法はありますか?
public Object process(Entry entry) {
if (entry.isPresent())
{
//UPDATE
... some stuff which compute the new entry value...
entry.setValue(newValue, true);
return newValue
}
else
{
//CREATION
..other stuff to determine the value...
entry.setValue(value, true);
return value;
}
}
:エージェント・オブジェクトの次のコードを呼び出す
map.invoke(key, agent);
:
例(エージェントのEntryProcessorインタフェースを実装ConcreteEntryProcessorのインスタンスです)エージェントを作成したノード私は良いパフォーマンスを持っています。そうでなければ、更新が別のノードから行われるとパフォーマンスが低下します。データの所有権の種類があるようです。
エージェントをローカルノード上で強制的に実行する方法や、データの所有権を変更する方法はありますか?
「私はmap.invoke(key、agent)メソッドをエージェントの作成と更新の両方に使用します」とはどういう意味ですか?この場合の 'agent'は' key'で指定されたキャッシュエントリで動作する 'EntryProcessor'のインスタンスです。' map.invoke'でエージェント( 'EntryProcessor's)をどのように作成/更新するのか分かりません。これまでに試したことのいくつかの例を示してください。 –
あなたのコメントに答えるために質問を修正しました.. – Fernando