#java #design-patterns #spring-batch #etl #jobs
#java #шаблоны проектирования #spring-batch #etl #Вакансии
Вопрос:
У меня возникли проблемы с поиском правильного ответа на этот вопрос. При использовании Spring Batch framework нормально ли пытаться решить всю пакетную обработку в одном общем задании?
Например, я пытаюсь обработать разные текстовые файлы (файлы с разной структурой) с помощью одного и того же задания.
Моя идея состоит в том, чтобы запустить задание из планировщика, передав ему строку с именем файла, который я хочу обработать. Затем я смог бы создать экземпляр объекта, связанного с обрабатываемым файлом, и этот объект будет передаваться от одного шага к другому, и на каждом шаге он сможет отвечать на вопросы, связанные с его разделителями, именами полей, инструкцией insert и так далее и тому подобное.
С другой стороны, я мог бы написать задание для каждого файла, но много кода было бы повторено.
Ответ №1:
JobStep — это то, что вам может понадобиться. Это специальный шаг, который делегирует задание. Следовательно, вы можете создать «основное» задание с несколькими подзадачами (они же шаги типа JobStep
). Очевидно, что каждое подзадание может быть обычным пакетным заданием Spring со своими шагами и т.д. Основное задание в этом подходе — это «одно общее задание», которое вы ищете.
этот объект будет передаваться с одного шага на другой и на каждом шаге
Это возможно путем передачи объекта (например, имени файла) в контексте выполнения от одного шага к следующему. Вы можете найти более подробную информацию об этом подходе, а также пример кода в разделе Передача данных для будущих шагов.
Надеюсь, это поможет.