Недавно я начал изучать Spring Batch, чтобы использовать некоторые из его более продвинутых функций, таких как асинхронная пакетная обработка, остановка заданий и планирование, чтобы заменить некоторые существующие функции пакетной обработки и реализовать новые функции пакетной обработки. Прямо сейчас я пытаюсь понять, как динамически обрабатывать несколько пакетных файлов и генерировать файл «квитанции» для каждого входного файла, и меня сбивают с толку некоторые дизайнерские решения архитекторов Spring Batch. Похоже, чтобы обработать простой плоский CSV-файл и сгенерировать вывод, мне придется вручную взломать beans в моем ApplicationContext и вручную установить их свойства «ресурса» во время выполнения, чтобы достичь того, что я хочу с помощью FlatFileItemReader и FlatFileItemWriter. Это небезопасно и не рекомендуется для чего-то, что предположительно является многопоточным высокопроизводительным фреймворком пакетной обработки. Я что-то упускаю?
Динамическая обработка нескольких командных файлов и создание соответствующих выходных файлов с помощью Spring Batch
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
не могли бы вы помочь мне с этим stackoverflow.com/questions/ 7878122 /
- person Dead Programmer; 26.10.2011
Похоже, вы можете использовать MultiResourceItemReader
для указания нескольких ресурсов и установить FlatFileItemReader
как MultiResourceItemReaders
делегата.
person
Hans Maes
schedule
29.12.2010
Я действительно смотрел на это, но нет (удобного) способа мультиплексирования выходных файлов из входных файлов.
- person Alex Marshall; 04.01.2011