在hazelcast队列上的java执行器服务

时间:2013-02-22 19:53:48

标签: java hazelcast

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

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

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

先谢谢!!

1 个答案:

答案 0 :(得分:1)

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

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

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

假设作业实现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

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