Как устроена chunk-ориентированная обработка в Spring Batch и что она даёт?
- Что такое chunk в Spring Batch?
Chunk — порция: прочитать N записей по одной, обработать, записать пачкой в одной транзакции. Память ограничена размером чанка, а после сбоя задание продолжается с последнего закоммиченного чанка.
- Размер чанка — компромисс: больше — быстрее, но дольше откат и больше повтор
- Ошибка в чанке — откат и повтор, с skip — пропуск плохих записей
- Reader должен уметь продолжить с позиции (ItemStream)
А ещё Партиционирование — параллельные чанки по диапазонам
Подробно
Размер чанка задаёт компромисс: слишком маленький даёт много коммитов и накладных расходов, слишком большой удлиняет транзакцию и увеличивает потери при сбое. Ключевую роль играет JobRepository — он хранит метаданные о выполнении, благодаря чему упавшая работа перезапускается не с начала, а с последнего успешного чанка. Именно поэтому пакетная обработка на Spring Batch устойчивее самописного цикла: тот при падении на миллионной записи обычно требует ручного разбора. Полезно знать и про обработку сбойных записей — skip и retry с ограничениями позволяют не ронять всю работу из-за нескольких плохих строк.
Что хотят услышать
- Схема read-process-write порциями.
- Транзакция на чанк, память, перезапуск.
Частые ошибки
- Ставить размер чанка равным всему объёму данных.
- Писать пакетную обработку циклом без сохранения прогресса.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Все элементы читаются в память целиком, обрабатываются и пишутся одной общей транзакцией
- ✗Каждый элемент обрабатывается в собственной транзакции
- ✓Элементы копятся до размера чанка и пишутся пачкой в транзакции; сбой откатывает чанк
- ✗Обработка идёт параллельно без транзакций вообще
Что спросят дальше
- Как выбрать размер чанка?
- Чем skip отличается от retry в Spring Batch?
Разбор темы
- Spring Batch, Integration и API styles
Batch jobs, enterprise integration patterns, Spring Data REST, HATEOAS и GraphQL.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.