#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. Не могли бы вы обновить свой вопрос более четким и подробным примером вашего рабочего процесса?
Прямо сейчас, учитывая формулировку вашего вопроса, похоже, вам нужно перепроектировать свою модель рабочего процесса