2013-11-26 3 views
0

Для текущего проекта я пытаюсь настроить следующий сценарий с JBoss 7.1 и HornetQ (JMS), который, по моему мнению, является довольно распространенным случаем: существует три сервера приложений. Ряд MDB должен обрабатывать фрагментированный фрагмент длинного процесса вычисления, задачи должны распределяться между тремя серверами. Когда один фрагмент завершен и соответствующий результат готов, результат должен быть отправлен в распределенную очередь, откуда он будет потребляться, и общий результат будет собран. Чтобы избежать условий гонки во время общей сборки результата, очередь результатов должна обрабатываться последовательно, хотя она может быть распределена между несколькими серверами. Никакое сообщение в очереди результатов не может быть обработано, пока еще не выполняется другое сообщение. Административное ограничение заключается в том, что потребители (MDB или сеансовые компоненты), потребляющие сообщения из очереди результатов, могут быть развернуты на всех узлах кластера, то есть EAR, развернутый на узлах кластера, идентичен. В этом случае один и тот же потребительский код будет развернут на каждом из узлов. Есть ли еще способ синхронизации доступа к очереди?HornetQ: последовательное распределение распределенной очереди

+0

Я не уверен, что вы хотите достичь здесь .. вы не хотите что-нибудь, чтобы потреблять в то время как первый из них является потребляя? Вы либо используете группировку сообщений, либо сохраняете одного потребителя. Сообщения являются асинхронными по своей природе. Кажется, вы хотите нарушить концепцию? –

ответ

1

Я не совсем понимаю ваш случай использования, но, похоже, вам нужна группировка сообщений.

http://docs.jboss.org/hornetq/2.4.0.beta1/docs/user-manual/html/message-grouping.html

если вы размещаете редактировать свои вопросы с чем-то простым, я могу понять, не рыть на вашем TestCase я могу быть в состоянии добавить дополнительную информацию к этому ответу.

Вы также говорили о длительном процессе. что звучит так, что у вас могут быть буферизация клиентов. взгляните на лечение медленных потребителей, установив размер user-window-size = 0 на сервереLocator.

этот пример здесь на hornetq пример того, как это может быть достигнуто:

http://docs.jboss.org/hornetq/2.4.0.beta1/docs/user-manual/html/examples.html#examples.no-consumer-buffering

+0

Благодарим вас, что группировка сообщений, по-видимому, является способом выхода. Из проблемы буферизации клиента я уже знал. –

Смежные вопросы