Что такое Spring Batch и из каких основных частей состоит batch job?
- Как устроен batch job в Spring Batch?
Spring Batch — фреймворк для пакетной обработки больших объёмов: Job состоит из Step, шаг обычно chunk-ориентированный — ItemReader → ItemProcessor → ItemWriter пачками с коммитом на каждую пачку.
- JobRepository хранит состояние в базе — упавшее задание продолжается с места остановки
- Пропуск (skip) и повтор (retry) ошибочных записей, листенеры
- Масштабирование: многопоточный шаг, партиционирование, удалённые чанки
А ещё Tasklet — шаг из одного действия (удалить файлы, вызвать процедуру)
Подробно
Задачи: ночная выгрузка, импорт файлов, перерасчёт, рассылка — миллионы записей, которые нужно обработать надёжно и с возможностью продолжить после сбоя.
Модель:
- 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 вместо фабрик.
Что хотят услышать
- Job, Step, chunk: reader, processor, writer.
- JobRepository и перезапуск.
- Skip и retry, масштабирование.
Частые ошибки
- Писать пакетную обработку одной огромной транзакцией.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✓Job из Step; шаг читает, обрабатывает и пишет пачками, состояние хранится в JobRepository
- ✗Планировщик задач по cron
- ✗Обработчик HTTP-запросов, который группирует их в пачки для экономии потоков
- ✗Брокер сообщений для пакетной передачи между сервисами без хранения состояния
Что спросят дальше
- Что такое chunk-oriented processing?
- Где хранится состояние batch job?
Разбор темы
- Spring Batch, Integration и API styles
Batch jobs, enterprise integration patterns, Spring Data REST, HATEOAS и GraphQL.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.