Пакет Spring для обработки файлов

Подходит ли Spring Batch для обработки большого количества отдельных файлов?

Spring Batch, похоже, ориентирован на работу, ориентированную на данные. У меня есть требование извлечь несколько миллионов файлов из корзины S3, разархивировать их, выполнить некоторую логику на основе содержимого, а затем вызвать веб-службу.

Реализовать это вручную тривиально, но я не особо хочу изобретать колесо, когда дело доходит до отслеживания выполнения заданий и того, как далеко продвинулось задание до того, как оно потерпело неудачу. Spring Batch, кажется, идеально подходит для этого мониторинга заданий, но я не уверен, является ли его подрыв для обработки файлов слишком большим шагом.


person EngineerBetter_DJ    schedule 15.05.2012    source источник
comment
Я думаю, что, основываясь на вашем описании, вам следует посмотреть на Spring Integration static.springsource .org / spring-integration / reference / html /. В нем есть адаптеры для обработки файлов, а со шлюзами веб-сервисов он подойдет для вашего случая использования.   -  person Prasanna Talakanti    schedule 15.05.2012
comment
Спасибо за ваш ответ. Я уже реализовал части системы в Spring Integration, но SI лучше всего подходит для событий и не предлагает концепции отслеживания выполнения задания и повторных попыток его выполнения в случае сбоя. SI отлично подходит для мониторинга файловых репозиториев и реагирования на файловые события, но был бы бесполезен, если бы мне нужно было обрабатывать все содержимое корзины S3 как специальную задачу.   -  person EngineerBetter_DJ    schedule 16.05.2012


Ответы (1)


Короткий ответ: да, для этого можно использовать Spring Batch. Я сделал небольшой POC, где нам нужно было перенести миллионы изображений из исходной системы в целевую систему в пакетном процессе, и он хорошо работает, ИМХО.

Добавляя комментарий @Prasanna Talakanti, я бы предложил использовать комбинацию Spring Integration и Spring Batch. В то время как пакет Spring предоставит вам инфраструктуру для пакетной обработки (фиксация через определенные промежутки времени, перезапуск задания в случае сбоя и т. Д.), Интеграция Spring предоставит вам возможности для шлюзов веб-служб.

В пакете Spring вы можете определить считыватель для чтения данных из S3 и писатель для записи в пункт назначения с промежуточным процессором, если это необходимо. Вы также можете точно настроить интервал фиксации, чтобы в случае сбоя задания у вас была точка отката.

person Vishal Biyani    schedule 19.06.2012