Вопрос с собеседования · Spring

Что такое Spring Batch и из каких основных частей состоит batch job?

SeniorSpring Batch и IntegrationSpring
Ещё спрашивают так:
  • Как устроен 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?

Разбор темы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования