我有一个 hazelcast 队列(在服务器实例之间共享),其中有 1000 条记录。记录是某种作业(例如发送电子邮件、短信等)。我需要通过从队列中挑选这些记录来处理它们。 为了加快速度,我正在考虑使用执行程序服务,以便多个线程异步处理记录。
此应用程序将部署在多个服务器上,因此我对多个服务器队列中记录的处理顺序有点困惑。我应该如何配置我的执行器,以便它从队列中获取记录并处理它们。我是否需要将执行器设置为每秒调用一次,以便它不断从处理中获取记录。
我不确定是否能够正确解释问题,但只是尝试在共享队列上使用执行程序服务(跨服务器实例)。
提前致谢!!
最佳答案
您可能需要考虑使用 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
您可以使用不同的名称配置多个分布式线程池。
关于hazelcast 队列上的 java 执行器服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15032199/