Hazelcast com.hazelcast.core.MultiTask在v3.8中不存在

VB_*_*VB_ 0 java hazelcast

我使用的是最新的Hazelcast v3.8,无法MultiTask在com.hazelcast.core包装内或任何其他包装中找到.

MultiTask在最新版本的Hazelcast中有什么替代品?

我想控制我的任务运行的物理节点.我找到了一个使用Hazelcast分布式执行程序的好例子.

你可以看到很好的例子:

public void echoOnMembers(String input, Set<Member> members) throws Exception {
   MultiTask<String> task = new MultiTask<String>(new Echo(input), members);
   ExecutorService executorService = Hazelcast.getExecutorService();
   executorService.execute(task);
   Collection<String> results = task.get();
}
Run Code Online (Sandbox Code Playgroud)

现在我想要相同的代码,但它将适用于v3.8.请帮忙)

mdo*_*gan 12

MultiTask在3.0中删除了有利于更具表现力,直截了当的ExecutorServiceAPI.您可以使用以下IExecutorService方法:

void executeOnMembers(Runnable command, Collection<Member> members);
void executeOnMembers(Runnable command, MemberSelector memberSelector);
void executeOnAllMembers(Runnable command);

<T> Map<Member, Future<T>> submitToMembers(Callable<T> task, Collection<Member> members);
<T> Map<Member, Future<T>> submitToMembers(Callable<T> task, MemberSelector memberSelector);
<T> Map<Member, Future<T>> submitToAllMembers(Callable<T> task);
Run Code Online (Sandbox Code Playgroud)

还有上述方法的回调版本.有关详细信息,请参阅:http: //docs.hazelcast.org/docs/latest/javadoc/com/hazelcast/core/IExecutorService.html

echoOnMembers(...)例如,直接替换是:

public void echoOnMembers( String input, Set<Member> members ) throws Exception {
  HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance();
  IExecutorService executorService = 
      hazelcastInstance.getExecutorService( "default" );

  Map<Member, Future<String>> futures = executorService
      .submitToMembers( new Echo( input ), members );

  for ( Future<String> future : futures.values() ) {
    String echoResult = future.get();
    // ...
  }
}
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅Hazelcast文档和代码示例:http: //docs.hazelcast.org/docs/latest/manual/html-single/index.html#executing-code-in-the-cluster

https://github.com/hazelcast/hazelcast-code-samples/tree/master/distributed-executor