Не существует лучшего подхода, так как он зависит от варианта использования.
Один из подходов - чтение в чанке, и внутри процесса мы берем id и попадаем в базу данных.Но процесс будет обрабатывать отдельные данные за один раз, который занимает больше всего времени.
Этот подход представляет собой общий шаблон, называемый «Шаблон запроса на вождение», подробно описанный в Типовые шаблоны раздел справочной документации.Идея состоит в том, что читатель читает только идентификаторы, а процессор обогащает элемент, запрашивая у второго сервера дополнительные данные для этого элемента.Конечно, это сгенерирует запрос для каждого элемента, но в любом случае это то, что вам нужно, если только вы не хотите, чтобы ваш второй запрос отправлял список всех идентификаторов в чанке.В этом случае вы можете сделать это в org.springframework.batch.core.ItemWriteListener#beforeWrite
, где вы получите список всех записываемых элементов.
Второй подход - сделать два разных шага, но в этом мы не можем поделиться спискомid на другой шаг, потому что мы можем передавать только небольшой объем данных на другой шаг.
Да, совместное использование большого количества данных через контекст выполнения не рекомендуется, так как этот контекст выполнения будет сохраняться между этапами,Поэтому я думаю, что это не очень хороший вариант для вас.
Надеюсь, это поможет.