Создать работу из сообщения Jms получить

Используя wildfly 15 и только JavaEE (без пружины), мне нужно потреблять сообщения из очереди Jms, чтобы по очереди и создавать для каждого сообщения новое задание, используя Jbatch, последовательно, без перекрытия заданий.

Например:

Очередь JMS: -> msgC -> msgB -> msgA

Jbatch:

  • при получении msgC, создайте JobC, запустите jobC
  • дождитесь окончания работы JobC, просмотрите очередь JMS, при получении msgB создайте JobB, запустите JobB
  • дождитесь завершения JobB, просмотрите очередь JMS, при получении msgA создайте JobA, запустите JobB

Возможно ли этого добиться?

0 ответов

Обработка сообщений параллельно или в правильной последовательности - это стандартное поведение клиентов JMS, и вы можете просто настроить его так, чтобы это было правильно. Вот почему у вас очередь. Просто убедитесь, что у вас есть только один управляемый сообщениями bean-компонент, работающий с ним, что должно гарантировать, что у вас есть один процесс и ничего не работает параллельно.

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

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

Другие вопросы по тегам