2013-02-22 4 views
1

У меня есть очередь орешника (разделенная по экземплярам сервера), в которой есть 1000 записей. Записи - это какие-то задания (например, отправка электронной почты, SMS и т. Д.). Мне нужно обработать эти записи, выбирая их из очереди. Чтобы сделать это быстро, я думаю об использовании службы-исполнителя, чтобы записи обрабатывались несколькими потоками асинхронно.java-исполнитель службы на очереди hazelcast

Это приложение будет развернуто на нескольких серверах, поэтому я немного запутался с порядком обработки записей в очереди на нескольких серверах. Как настроить мой исполнитель, чтобы он забирал записи из очереди и обрабатывал их. Нужно ли настраивать моего исполнителя, чтобы вызывать его через каждую секунду, чтобы он не удалял получение записей из обработки.

Я не уверен, если я правильно объясню проблему, но просто попытаюсь использовать службу-исполнитель на общей очереди (по экземплярам сервера).

Спасибо заранее!

ответ

1

Возможно, вы захотите рассмотреть возможность использования службы исполнителя hazelcast. Я пробовал использовать очередь орешника для пула локальных потоков, и мой опыт в том, что он не распределяет задачи должным образом.

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

Он автоматически распределяет выполнение задания в пределах кластера.

Предполагая, что задание реализует отзывной, вы можете сделать следующее

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 

Вы можете настроить несколько распределенных пулы потоков, используя разные имена.