Последовательная обработка нескольких файлов в Spring Batch - PullRequest
0 голосов
/ 13 декабря 2011

У меня есть следующий вариант использования: мне нужно обработать большое количество файлов. Каждая обработка выглядит примерно так:

1) читать файл

2) выполнить операцию (а) над содержимым

3) выполнить операцию (б) над содержимым

4) выполнить операцию (с) над содержимым

    ... 

n) удалить файл

Spring Batch кажется хорошим решением этой проблемы с одним исключением: я не хочу читать все файлы на шаге 1), передавать все их на шаг 2) и т. Д., Потому что это потребует много объем памяти.

РЕДАКТИРОВАТЬ : Я фиксирую свои файлы в памяти (не в БД). Вот почему я предпочитаю обрабатывать файлы по одному или в пакетном режиме. Я имею в виду: выполнить все шаги для одного файла / пакета (файл / пакет удаляется на последнем шаге, очищается память), затем переходить к следующему файлу / пакету и т. Д.

Есть ли в Spring Batch механизм, поддерживающий многократное выполнение всех шагов снова и снова? Или мне просто нужно выполнить одно и то же задание несколько раз, пока у меня не закончатся файлы?

Спасибо и всего наилучшего, Питер

Ответы [ 2 ]

2 голосов
/ 13 декабря 2011

в Spring Batch Doc это обрабатывается при многофайловом вводе

, оно работает с одним шагом, и это будет сделано:

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

В вашем простом случае для N файлов вам нужно выполнить N заданий, каждому из которых передается имя файла как JobParameter.Каждый ваш шаг обработки не может быть выражен в терминах Spring Batch, но вы можете использовать CompositeItemProcessor для цепочки ваших процессоров.

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