У нас есть пакетное приложение Spring с чанк-обработкой, которое читает записи из БД, обрабатывает их и вызывает службу / выполняет несколько вставок / обновляет несколько таблиц в БД в составе модуля записи.
JDBCPagingItemReader
был использован как потокобезопасный, когда saveState имеет значение false.Ключ сортировки был установлен, чтобы потоки не пересекались друг с другом.Также уровень изоляции ISOLATION_READ_COMMITTED
был использован для источника данных oracle и конфигурации JobRepository
пакета Spring.
Несколько потоков, использующих ThreadPoolTaskExecutor
, отлично работают в настоящее время в одном экземпляре.
Мыв конечном итоге следует развернуть это приложение Spring Boot в OpenShift, где приложение будет работать в нескольких PODS, т.е. в нескольких экземплярах приложения, которые все читают из одной таблицы.
Может ли кто-то, кто обладает знаниями, сообщить мне, если будетвозникнут какие-либо проблемы при использовании вышеуказанной комбинации в нескольких модулях (экземплярах) или возникнут проблемы с параллелизмом, которые необходимо устранить.
Любые передовые практики в этом сценарии высоко ценятся.
Спасибоза ваше время.