Добры день, в задании есть такое флоу
0.Очистить базу данных
1.Зайти на фтп сервер и выбрать из нужных файлов урлы
2.Пройти по этим урлам на фтп - прочитать файл ( xml) - распарсить с доменную модель
3.Сохранить в базу данных
Что лучше использовать Spring Batch или Spring Integration
сергей кузьмин, один раз в сутки одна джоба состоящая из 4 степов описанных в сабже,
нужно понять что тут лучше подходит. Мне кажется спринг батч , так как одна джоба один раз в сутки, а не поток данных постоянно. Но я в этом не уверен. Я вообще не уверен что тут нужен какой то фреймворк - мне видится что можно спокойно читать файлы на одном конце и кидать готовые доменные модельки в очередь, на другом конце собирать их в батчи и писать в бд
Spring Integration тут не нужен. Он - ближе к обработке событий.
Вот эти два пункта
прочитать файл ( xml) - распарсить с доменную модель
3.Сохранить в базу данных
надо расписать поподробнее.
Насчет Spring Batch я не уверен. Он пока выглядит овер-проектированием.
После того как ты распишешь подробно что делают все stages этого джоба
тогда и можно обсудить применимость Spring Batch.
mayton2019,
1 шаг - идем по указанному пути - достаем там файл со списком директорий, далее итерируемся по этому списку и достаем оттуда пути к xml файлам , складываем это все в базу данных в виде такой структуры
id, path
2 шаг - достаем из базы пути, итеративно обходим и выкачиваем файл , парсим xml документ и преобразоываем его в pojo и сохрняем в базу
На вскидку не понятно зачем хранить пути - если они нам нужны только для того чтобы по ним пройти один раз - тоесть по сути часть 1 шага лишняя , так как добавляет ненужные транзакци записи/чтения и транкейта в таблицу путей
так же в коде я не вижу чтобы использовался chunk, тоесть все это обрабатывается последовательно судя по всему - тогда вообще не понятнет смысл батча
я бы сделал так
1 шаг оставить все кроме записи в бд, добавить cnank и передавать эти пути далее по флоу
2.шаг вычитывание файла
3.преобразование данных из файла в pojo
4.запись в базу
Складывание путей в базу - выглядит лишним. Если полезный эффект от джоба - это сохранение pojo - то сохраняй только pojo.
Данная задача может быть полностью решена на pure java. И я не вижу смысла затаскивать Spring Batch.
В крейнем случае если вы - техно-фетишисты и просто любите Спринг то - берите конешно. Но тогда
сам по себе вопрос Batch/Integration в топике выглядит хитро и лукаво. Это как пикапить девушку на улице и сразу
спрашивать ее что она любит кофе или мороженное. Все равно выбора ей не оставляете. Вроде как уже
согласна пойти с вами.
mayton2019, спринг батч там пригодился, ибо у него очень удобные бек офф политики. Сделал в один шаг на стандартных интерфейсах батча, itemReader, ItemProcessor , ItemWriter. В нашем случае конечно это оверхед, но для обшего развития вообще отлично, правда пришлось прочитать книгу Spring Batch in Action )