Spring Batch + Spring Boot - отдельное задание, каждый шаг которого запланирован отдельно с определенной последовательностью - PullRequest
0 голосов
/ 14 июля 2020

Я только начал работать с Spring Batch. Я использую Spring Batch (4.2.2) + Spring Boot (2.3.0) и изучаю, как разработать свою проблему, в которой у меня есть несколько исходных файлов для загрузки в несколько таблиц БД, с каждым данными загрузка с разной частотой.

Некоторые данные должны загружаться трижды в день, некоторые - ежедневно, некоторые - ежеквартально и т. д. c. Кроме того, между ними существует зависимость, и при их запуске необходимо соблюдать определенную последовательность.

Ниже приведен сценарий, отображающий реальную проблему (Источник -> Таблица БД - Частота загрузки):

  1. Status.csv -> Таблица STATUS_CODES - ежегодно (1 января каждого года в 01:00).
  2. Products.csv -> Таблица PRODUCTS - Ежеквартально (1 января, 1 апреля, 1 июля и т. Д.) c. В 01:00)
  3. Employee.csv -> таблица EMP - ежедневно (01:00).
  4. Franchises.csv -> таблица FRANCHISE - еженедельно (каждую пятницу, 01:00)
  5. Used_Products_Sold.csv -> Таблица SALES - ежедневно (01:00).
  6. Products_Sold.csv -> Таблица SALES - ежедневно (01:00).
  7. Offers_Activated.csv - > Таблица SERV_ACTV - трижды в день (1:00, 9:00, 17:00).
  8. Таблица SERV_ACTV -> Таблица SALES - трижды в день (1:00, 9:00, 17:00).

Прямо сейчас я инкапсулировал каждый из вышеперечисленных потоков в отдельные шаги, такие как loadStatusDataStep (# 1), loadProductsDataStep (# 2), loadEmployeeDataStep (# 3) et * 1 058 *. Я пытаюсь выяснить, можно ли запланировать каждый из этих шагов?

Итак, скажем, когда задание запускается 1 января 2021 года (пятница) в 1 час ночи, ниже должна быть последовательность шагов:

Шаги 1, 2 параллельно> Шаги 3, 4 параллельно> Шаги 5, 6 параллельно> Шаг 7> Шаг 8

Работа выполняется 1 января 2021 года (пятница) в 9:00 должны выполняться только шаги 7 и 8 (потому что другие уже выполнялись в этот день), а последовательность шагов будет следующей:

Шаг 7> Шаг 8

Работа выполняется 2 января 2021 года (суббота) в 01:00, шаги 1, 2 и 4 не должны выполняться, и последовательность шагов будет следующей:

Шаг 3> Шаги 5, 6 параллельно> Шаг 7> Шаг 8

Может ли это быть выполнено с помощью одного задания с несколькими шагами? Если да, то как мы можем определить частоту для каждого шага?

Или это должно быть сделано путем определения отдельного задания для каждого (от 1 до 8), и в этом случае, как определить последовательность между ними Вакансии?

Был бы признателен за любую помощь о том, как подойти / разработать его.

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