Как вызвать еще один шаг внутри процесса чанка в Spring Batch? - PullRequest
2 голосов
/ 11 октября 2011

Возможно ли / целесообразно ли следующее в Spring Batch?

У меня есть файл csv, например, foo.csv.Я установил процесс чанка, который читает файл в объекты Foo, а затем обрабатывает их в объекты Bar.Наконец, они записываются в файл bars.csv.

foos.csv ---- [IR] ----> Foo ---- [IP] -----> Bar------ [IW] ----> bars.csv

, где IR означает ItemReader, IP для ItemProcessor и IW для ItemWriter

Теперь я хочу продолжитьобработайте объект Bar, превратите его в объект Baz и сделайте с ним что-нибудь еще, например запишите его в файл bazs.csv или около того.

foos.csv ---- [IR]----> Foo ---- [IP 1] -----> Bar ------ [IW 1] ----> bars.csv---- [IP 2] -----> Baz ------ [IW 2] ----> bazs.csv

Или даже лучше

foos.csv ---- [IR] ----> Foo ---- [IP 1] -----> Bar ------ [IW 1] ----> bars.csv----- [IW 2] ----> [Next Step]

, где мы повторно называем следующий шаг в пределах итерацией, тем самым пропуская следующий объект Bar.На этом следующем шаге мы могли бы затем выполнить преобразование в Baz.

Итак, подведем итог: можно ли вызвать шаг из процесса чанка?Это хорошая идея?Если нет, каковы альтернативы?

Ответы [ 2 ]

3 голосов
/ 11 октября 2011

на данный момент у вас есть как минимум 2 возможных решения

  • цепочка итераторов , каждый процессор тоже может быть записывающим
  • использовать базу данных для хранения промежуточной работы и использовать ее для будущих шагов и / или потоков

ваш последний вариант использования выглядит так, как будто он лучше реализован с помощью решения, ориентированного на сообщения

2 голосов
/ 11 октября 2011

Вы можете рассмотреть возможность использования CompositeItemWriter для вывода данных из этапа обработки в два разных источника, один для "bars.csv" и один для некоторого рода "Baz" ItemWriter.

Ваш поток будет выглядеть так:

foos.csv ---- [IR] ---> Foo --- [IP1] ---> Bar ---- [IW1] ----> bars.csv 
                                                    [IW2] ----> Baz --- [further steps]

Это решит ваш вариант использования?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...