Задачи: ночная выгрузка, импорт файлов, перерасчёт, рассылка — миллионы записей, которые нужно обработать надёжно и с возможностью продолжить после сбоя.
Модель:
- Job — задание, последовательность шагов; JobInstance — запуск с конкретными параметрами (дата), JobExecution — попытка запуска;
- Step — шаг: chunk-ориентированный или Tasklet;
- chunk-шаг:
ItemReader читает по одной записи, ItemProcessor преобразует или фильтрует, ItemWriter пишет пачку из N записей в одной транзакции; - JobRepository — таблицы в базе с состоянием выполнения: какой шаг, сколько прочитано, где остановились.
Надёжность: при падении задание перезапускается с теми же параметрами и продолжает с последнего закоммиченного чанка (если reader умеет сохранять позицию). faultTolerant().skip(...).skipLimit(100).retry(...) — пропуск плохих записей и повтор временных ошибок.
Готовые компоненты: читатели и писатели для файлов (CSV, XML, JSON), JDBC (курсор, постраничное чтение), JPA, Kafka, MongoDB.
Масштабирование: несколько потоков на шаг, партиционирование данных по диапазонам между исполнителями, удалённые чанки через брокер.
Spring Batch 5 (Boot 3): @EnableBatchProcessing больше не нужен в Boot, JobBuilder и StepBuilder вместо фабрик.