Создать работу из сообщения 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-компоненте, управляемом сообщениями.