Проблема транзакции базы данных метаданных Spring Batch - PullRequest
0 голосов
/ 06 ноября 2019

Я использую Spring Batch (версия 4.1.2). Проблема заключается в следующем:

1 / пакетное задание ориентировано на шаг (2 шага), первый шаг загружает данные из базы данных Oracle (заказы клиентов - единственный небольшой объем данных), фильтрует их для дальнейшей обработки исохраняет результат в объекте в памяти (orderNo - т.е. обрабатывает этот порядок на втором шаге)

2 / второй шаг берет эти отфильтрованные данные из памяти и обрабатывает их - загружает данные (теперь полный объем данных,полный порядок) и обрабатывает их - запускает хранимую процедуру в oracle, а затем вызывает какой-то внешний веб-сервис

Первый шаг очень быстрый - ок. 5 сек

Второй шаг очень медленный - для каждого заказа клиента требуется ок. 10 сек

Типичный размер данных: первый шаг загружает тысячи заказов и фильтрует ок. 100-300 заказов для дальнейшей обработки на втором шаге.

Конфигурация для первого шага: порция 100 заказов

Конфигурация для второго шага: порция = 1

Апроблема: если не выполняется второй шаг (вызов веб-службы), транзакция базы данных метаданных завершается неудачно из-за тайм-аута. Или, если задание выполнено успешно, снова база данных метаданных завершается неудачно с истечением времени ожидания. Почему? Время ожидания транзакции установлено на 30 секунд. Мне кажется, что на транзакцию базы метаданных не влияет конфигурация чанка.

Примечание: база данных заказов: оракул, база метаданных: postgresql

Любые предложения, решения и т. Д., Пожалуйста,

1 Ответ

0 голосов
/ 07 ноября 2019

@ Транзакционный (распространение = Propagation.REQUIRES_NEW)

в методе ItemProcessor

Процесс O (I var1) выдает исключение;

было решением проблемы.

...