Не привязывать группы jms к конкретному рабочему

#java #jakarta-ee #jms #hornetq

#java #джакарта-ee #jms #hornetq

Вопрос:

Обновлено:

Мы получаем значения измерений с разных станций измерения и помещаем их для обработки в очередь jms. Теперь мы используем группировку jms, где groupId — это идентификатор станции, чтобы гарантировать, что значения с одной станции обрабатываются последовательно.

Просто посмотрите образец в документации: http://docs.jboss.org/hornetq/2.2.2.Final/user-manual/en/html/message-grouping.html

Но в HornetQ (или jms вообще) каждая группа привязана к одному конкретному рабочему. Это означает, что если группа A и группа B прикреплены к рабочему X и в очереди есть 10 сообщений для группы A и 10 сообщений для группы B, сообщения группы B должны ждать, пока сообщения группы A не будут обработаны. (Хотя есть достаточно свободных рабочих, которые могут обрабатывать сообщения группы B прямо сейчас)

Есть ли способ сообщить jms не привязывать каждую группу к одному конкретному рабочему, а только для обеспечения последовательного процесса в каждой группе.

Ответ №1:

Очереди JMS предотвращают параллельную обработку. Вы подтвердили, что разные потребители обрабатывают одно и то же сообщение? Имеет ли каждое сообщение уникальный идентификатор и регистрируете ли вы идентификатор каждого обработанного сообщения?

Из приведенного вами примера похоже, что вы неправильно используете очереди JMS. Не могли бы вы обновить свой вопрос более четким и подробным примером вашего рабочего процесса?

Прямо сейчас, учитывая формулировку вашего вопроса, похоже, вам нужно перепроектировать свою модель рабочего процесса