Общий дизайн заданий Spring Batch

#java #design-patterns #spring-batch #etl #jobs

#java #шаблоны проектирования #spring-batch #etl #Вакансии

Вопрос:

У меня возникли проблемы с поиском правильного ответа на этот вопрос. При использовании Spring Batch framework нормально ли пытаться решить всю пакетную обработку в одном общем задании?

Например, я пытаюсь обработать разные текстовые файлы (файлы с разной структурой) с помощью одного и того же задания.

Моя идея состоит в том, чтобы запустить задание из планировщика, передав ему строку с именем файла, который я хочу обработать. Затем я смог бы создать экземпляр объекта, связанного с обрабатываемым файлом, и этот объект будет передаваться от одного шага к другому, и на каждом шаге он сможет отвечать на вопросы, связанные с его разделителями, именами полей, инструкцией insert и так далее и тому подобное.

С другой стороны, я мог бы написать задание для каждого файла, но много кода было бы повторено.

Ответ №1:

JobStep — это то, что вам может понадобиться. Это специальный шаг, который делегирует задание. Следовательно, вы можете создать «основное» задание с несколькими подзадачами (они же шаги типа JobStep ). Очевидно, что каждое подзадание может быть обычным пакетным заданием Spring со своими шагами и т.д. Основное задание в этом подходе — это «одно общее задание», которое вы ищете.

этот объект будет передаваться с одного шага на другой и на каждом шаге

Это возможно путем передачи объекта (например, имени файла) в контексте выполнения от одного шага к следующему. Вы можете найти более подробную информацию об этом подходе, а также пример кода в разделе Передача данных для будущих шагов.

Надеюсь, это поможет.