Spring Batch: как добавить зависимость между шагами в параллельном потоке - PullRequest
0 голосов
/ 29 сентября 2019

У меня есть пакетное задание Spring, которое внутренне использует "разбиения" для параллельного выполнения последовательности шагов.

Например:

Первый шаг задания = "A"

«A» разделяется на 2 параллельных потока:

 1) B1 -> B2 -> B3 -> B4
 2) C1 -> C2 -> C3 -> C4

B1, B2, B3 и B4 - последовательные этапы, выполняющиеся в одном «потоке» пружинной партии, а C1, C2, C3 и C4 - еще один наборпоследовательные шаги, выполняемые в другом потоке пружины.

Я хочу запускать C3 только после завершения B3. Есть ли способ добиться этого?

1 Ответ

1 голос
/ 29 сентября 2019

Это больше похоже на проблему проектирования потоков, чем на возможность реализации Spring Batch. Вы не можете запускать две задачи параллельно, когда одна задача зависит от другой. Параллельная работа означает, что каждый поток может работать независимо от других параллельных потоков.

Вам необходимо изменить дизайн своего потока, используя подпотоки. Поскольку C3 зависит от B3, вы, вероятно, могли бы разделить свои потоки на что-то вроде:

B1 -> B2
         \
          B3 -> B4
         /  \
C1 -> C2     C3 -> C4

Технически возможно делать то, что вы хотите, не меняя определения потока (например, используя общий логический элемент между B3 и C3 изаставьте С3 подождать) но это уродливая работа вокруг проблемы проектирования потока.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...