Hazelcast Distributed Execution の概念を理解するのに問題があります。特定のキーの所有者インスタンスで実行できると言われています。
ドキュメントから:
<T> Future<T> submitToKeyOwner(Callable<T> task, Object key)
Submits task to owner of the specified key and returns a Future representing that task.
Parameters:
task - task
key - key
Returns:
a Future representing pending completion of the task
複数のマップで構築されたクラスターを持っているのは私だけではないと思いますが、実際には同じキーを異なる目的で使用し、異なるオブジェクト (たとえば、次のセットアップに沿ったもの) を保持する可能性があります。
IMap<String, ObjectTypeA> firstMap = HazelcastInstance.getMap("firstMap");
IMap<String, ObjectTypeA_AppendixClass> secondMap = HazelcastInstance.getMap("secondMap");
私には、キーの所有者について文書に記載されていることは非常に混乱しているように思えます。私の本当のフラストレーションは、それがどのマップのどのキーを参照しているのかわからないことです。
ドキュメントには、このアプローチの「デモ」もあります。
import com.hazelcast.core.Member;
import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.IExecutorService;
import java.util.concurrent.Callable;
import java.util.concurrent.Future;
import java.util.Set;
import com.hazelcast.config.Config;
public void echoOnTheMemberOwningTheKey(String input, Object key) throws Exception {
Callable<String> task = new Echo(input);
HazelcastInstance hz = Hazelcast.newHazelcastInstance();
IExecutorService executorService = hz.getExecutorService("default");
Future<String> future = executorService.submitToKeyOwner(task, key);
String echoResult = future.get();
}
ドキュメンテーションサイトへのリンクは次のとおり
です。