Динамическая обработка нескольких командных файлов и создание соответствующих выходных файлов с помощью Spring Batch

Недавно я начал изучать Spring Batch, чтобы использовать некоторые из его более продвинутых функций, таких как асинхронная пакетная обработка, остановка заданий и планирование, чтобы заменить некоторые существующие функции пакетной обработки и реализовать новые функции пакетной обработки. Прямо сейчас я пытаюсь понять, как динамически обрабатывать несколько пакетных файлов и генерировать файл «квитанции» для каждого входного файла, и меня сбивают с толку некоторые дизайнерские решения архитекторов Spring Batch. Похоже, чтобы обработать простой плоский CSV-файл и сгенерировать вывод, мне придется вручную взломать beans в моем ApplicationContext и вручную установить их свойства «ресурса» во время выполнения, чтобы достичь того, что я хочу с помощью FlatFileItemReader и FlatFileItemWriter. Это небезопасно и не рекомендуется для чего-то, что предположительно является многопоточным высокопроизводительным фреймворком пакетной обработки. Я что-то упускаю?


person Alex Marshall    schedule 03.11.2010    source источник
comment
Я ответил на вопрос о взломе свойств: bean-компоненты, относящиеся к Job, можно сделать уникальными для JobInstance, используя для bean-компонентов scope = step, что является дополнением к Spring Framework, предоставленной Spring Batch, но я все еще ищет простой способ сопоставить n входных пакетов с n выходными пакетами.   -  person Alex Marshall    schedule 03.11.2010
comment
Алекс, вы все еще ищете ответ на свой вопрос о том, как сделать общее задание для обработки нескольких исходных файлов и вывода файла с квитанцией?   -  person Joshua Moore    schedule 02.09.2011


Ответы (2)


Как оказалось, я неправильно понял часть документации. Spring Batch представляет новую область видимости bean-компонента, «step», и использует ее для создания новых bean-компонентов для каждого шага в потоке пакетной обработки на основе bean-компонента с именем, указанным в конфигурации для читателей и писателей. Затем он динамически настраивает их с помощью Spring EL. Что касается запуска нескольких пакетов, я просто закончил настройку для определения одного пакета, а затем вставил обработку нескольких пакетов в код.

person Alex Marshall    schedule 02.09.2011
comment
не могли бы вы помочь мне с этим stackoverflow.com/questions/ 7878122 / - person Dead Programmer; 26.10.2011

Похоже, вы можете использовать MultiResourceItemReader для указания нескольких ресурсов и установить FlatFileItemReader как MultiResourceItemReaders делегата.

person Hans Maes    schedule 29.12.2010
comment
Я действительно смотрел на это, но нет (удобного) способа мультиплексирования выходных файлов из входных файлов. - person Alex Marshall; 04.01.2011