2012-02-02 6 views
6

В настоящее время я пишу распределенную систему с использованием hazelcast. У меня есть несколько вопросов относительно очередей, реализованных с использованием hazelcast.Hazelcast Queue Info

  1. Каков наилучший способ обработки данных из очереди? В настоящее время у меня есть потоки на каждом «узле», считывающие блокирующую очередь обработки данных. Является ли это правильным или есть какой-то класс, о котором я не знаю, что это касается как JMS или messageListener?
  2. Я вижу, что есть параметр времени жизни, который будет удалять запись из очереди с истекшим сроком действия. Мой вопрос ... есть ли способ обнаружить удаление истекшего элемента из очереди? Я знаю, что есть Listeners, но это не помогает, так как это срабатывает на всех «узлах», а не только на одном. Я ищу способ выполнения кода для каждого истекшего сообщения (похоже на очередь с мертвой буквой).

Любой вход или совет по этому вопросу были бы весьма признательны.

Благодаря

ответ

9
  1. Там нет другого пути, на данный момент. Таким образом, у вас будут свои потоки на каждом узле, вызывающие queue.take(). Команда Hazelcast планирует добавить IQueue.addQueueConsumer (QueueConsumer), который будет вести себя аналогично JMS MessageListener

  2. Вы правы. Добавление слушателей - не лучший способ сделать это, поскольку это очень дорогостоящая операция. Возможно, вы захотите создать проблему для этого на http://code.google.com/p/hazelcast/issues. Конечно, приятно иметь функцию.

-talip @ hazelcast

+0

Спасибо за ответ! – Paul

+1

Любознательно, если любой из этих предметов был рассмотрен с 2012 года. – Snekse

+1

nope, addQueueConsumer по-прежнему отсутствует: http://docs.hazelcast.org/docs/3.6/javadoc/com/hazelcast/core/IQueue.html –