Я разрабатываю весеннее пакетное задание, в котором мне нужно читать из 4 разных баз данных (разных серверов).
Процесс идет примерно так
1)Чтение записей из db1
2) Отфильтруйте несколько с информацией в db2
3) Отфильтруйте еще немного с информацией в db3
4) Отфильтруйте еще немного с информацией вdb4
5) Сохранить отфильтрованные записи в db5
Мой подход
Для чтения из db1 , я могу использовать ItemReader (и предоставить значение чанка вшаг), а затем используйте несколько цепочечных процессоров для фильтрации, а затем JpaItemWriter.
Проблема с моим подходом
Проблема, с которой я думаю, что вышеупомянутый подход заключается в том, скажем, я получаю 100 000 записей из db1, мне нужно запросить db2, db3, db4 100 000 раз, потому что ItemProcessor будет вызываться для каждого элемента.
Возможное решение
1) Я думаю, проблемабудет решен, если процессор будет вызываться для каждого куска записей вместо1 запись.
2) Или если я могу связать пружинные считыватели так, чтобы один считыватель передавал данные (порция за порцией) другой, и там я мог просто отфильтровывать информацию на основе информации из другой базы данных и, наконец, переходить кпроцессор
Но я не уверен или не могу найти способ реализовать описанные выше решения, о которых думал.
Достаточно ли хороши эти решения ?, Если да, то как я могу их реализовать?
Или есть ли другой способ реализовать это?
Редактировать: Этот вопрос является возможным дубликатом, но решение этого вопроса не решит проблему вмой случай.
Поскольку у меня есть более 2 баз данных для чтения, а также если я пишу свою логику фильтрации в методе записи писателя, это выглядит как хак, потому что писатели не предназначены для какого-либо обогащения / фильтрации данных.