1

我有一个 hazelcast 队列(在服务器实例之间共享),其中有 1000 条记录。记录是某种工作(如发送电子邮件、短信等)。我需要通过从队列中挑选它们来处理这些记录。为了让它更快,我正在考虑使用执行器服务,以便记录由多个线程异步处理。

此应用程序将部署在多台服务器上,因此我对多台服务器队列中记录的处理顺序感到有些困惑。我应该如何配置我的执行程序,以便它从队列中获取记录并处理它们。我是否需要将我的执行程序设置为每秒被调用一次,以便它不断从处理中获取记录。

我不确定我是否能够正确解释问题,但只是尝试在共享队列(跨服务器实例)上使用执行程序服务。

提前致谢!!

4

1 回答 1

1

您可能需要考虑使用 hazelcast 执行器服务。我尝试将 hazelcast 队列用于本地线程池,我的经验是它不能正确分配任务。

http://www.hazelcast.com/docs/2.5/manual/multi_html/ch09.html

它会自动在集群中分配作业执行。

假设job实现了Callable,可以执行以下操作

Future<T> future =  hazelcastInstance.getExecutorService([optional name]).submit(job);
//if you want the return value of the job, you can do this:
T value = future.get(); //This blocks until the job is done

您可以使用不同的名称配置多个分布式线程池。

于 2013-04-16T16:37:23.090 回答