Целью пакетной обработки является разбиение того, что вы пытаетесь сделать, на небольшие единицы работы, которые можно обрабатывать по отдельности (последовательно или параллельно). Spring batch - это фреймворк, который предоставляет вам гибкий механизм, построенный поверх Spring, который позволяет вам выполнять пакетную обработку стилей. В зависимости от ваших требований вы можете настроить выполнение Spring Spring различными способами. Упомянутая вами обработка, ориентированная на чанки, - это всего лишь один из способов использования пакета Spring.
Если я посмотрю на предоставленную вами информацию, то вот элементы вашей заявки, которые я вижу:
- чтение записей из базы данных, которые нужны
обрабатываться
- обрабатывает записи, что приводит к
БД № 2 обновляется
- пометить записи как обработанные
- запись записи в обработанный файл
Вы заметите, что я немного изменил порядок событий. Логика, как я описал, хорошо подходит для пакетной обработки. Вот пример того, как вы можете управлять этой обработкой с помощью Spring batch:
- Извлечение записей из базы данных для обработки. Поиск будет осуществляться с помощью специального средства извлечения базы данных. Эти записи будут использоваться Spring Batch в качестве селектора записей. Затем вы настроите пакет Spring для итерации по этому списку.
- Вы должны сконфигурировать следующий шаг пакета Spring для обработки каждой из записей, полученных на шаге 1. Эта обработка будет состоять из обработки отдельной записи и записи результатов во вторую базу данных.
- Ваш последний шаг - завершить обработку отдельной записи. Как и в большинстве сред Spring, существует множество различных способов настройки, когда это происходит. Этот последний шаг будет выполнять две функции: обновлять запись в db # 1 после обработки и записывать обработанную запись в выходной файл. Запись выходного файла может быть выполнена в качестве шага 4 после завершения всего пакетного процесса, где вы будете просматривать записи, помеченные как обработанные во время текущего прогона, и записывать данные по мере необходимости.
Spring batch позволяет вам настраивать управление транзакциями на протяжении всей обработки, поэтому вы можете настроить транзакцию, выполняющую все действия, и, если запись в файл не удалась, ее можно настроить для отката остальных операций базы данных.
При таком подходе вы можете обрабатывать записи последовательно, параллельно и т. Д. Однако все это предполагает, что вы можете разбить данные на более мелкие единицы работы. Если это не так, то пакетная обработка на самом деле не может быть выполнена, поскольку у вас есть только один процесс.
Я хотел бы сказать, что есть простой ответ, чтобы решить, использовать ли пакет Spring или нет. Это платформа, которая позволяет вам делать много вещей. Наряду с такой гибкостью у него относительно высокая кривая обучения.
Надеюсь, это поможет.