Hazelcast com.hazelcast.core.MultiTask 在 v3.8 中不存在
Hazelcast com.hazelcast.core.MultiTask is absent in v3.8
我使用的是最新的 Hazelcast v3.8,在 com.hazelcast.core
包或任何其他包中找不到 MultiTask
。
在最新版本的 Hazelcast 中 MultiTask
的替代品是什么?
我想控制我的任务在哪些物理节点上 运行。我找到了 Hazelcast distributed executor in use 的一个很好的例子。
你可以看到很好的例子:
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();
}
现在我想要相同的代码,但它可以在 v3.8 上运行。请帮助)
MultiTask
在 3.0 中被移除,取而代之的是更具表现力、更直接的 ExecutorService
API。您可以使用以下 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);
上述方法还有回调版本。有关详细信息,请参阅:
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();
// ...
}
}
有关详细信息,请参阅 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
我使用的是最新的 Hazelcast v3.8,在 com.hazelcast.core
包或任何其他包中找不到 MultiTask
。
在最新版本的 Hazelcast 中 MultiTask
的替代品是什么?
我想控制我的任务在哪些物理节点上 运行。我找到了 Hazelcast distributed executor in use 的一个很好的例子。
你可以看到很好的例子:
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();
}
现在我想要相同的代码,但它可以在 v3.8 上运行。请帮助)
MultiTask
在 3.0 中被移除,取而代之的是更具表现力、更直接的 ExecutorService
API。您可以使用以下 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);
上述方法还有回调版本。有关详细信息,请参阅: 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();
// ...
}
}
有关详细信息,请参阅 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