Я использую Spring Batch (версия 4.1.2). Проблема заключается в следующем:
1 / пакетное задание ориентировано на шаг (2 шага), первый шаг загружает данные из базы данных Oracle (заказы клиентов - единственный небольшой объем данных), фильтрует их для дальнейшей обработки исохраняет результат в объекте в памяти (orderNo - т.е. обрабатывает этот порядок на втором шаге)
2 / второй шаг берет эти отфильтрованные данные из памяти и обрабатывает их - загружает данные (теперь полный объем данных,полный порядок) и обрабатывает их - запускает хранимую процедуру в oracle, а затем вызывает какой-то внешний веб-сервис
Первый шаг очень быстрый - ок. 5 сек
Второй шаг очень медленный - для каждого заказа клиента требуется ок. 10 сек
Типичный размер данных: первый шаг загружает тысячи заказов и фильтрует ок. 100-300 заказов для дальнейшей обработки на втором шаге.
Конфигурация для первого шага: порция 100 заказов
Конфигурация для второго шага: порция = 1
Апроблема: если не выполняется второй шаг (вызов веб-службы), транзакция базы данных метаданных завершается неудачно из-за тайм-аута. Или, если задание выполнено успешно, снова база данных метаданных завершается неудачно с истечением времени ожидания. Почему? Время ожидания транзакции установлено на 30 секунд. Мне кажется, что на транзакцию базы метаданных не влияет конфигурация чанка.
Примечание: база данных заказов: оракул, база метаданных: postgresql
Любые предложения, решения и т. Д., Пожалуйста,