Упрощенный пример
Код: Выделить всё
@Transaction
public void someFunc(){
doSomething()
.buffer()
.flatMapIterable(x -> x)
.parallel(16)
.concatMap(id -> doSomethingInParralel(id))
.sequential()
.collectList();
}
public Object doSomethingInParalel(int id){
// run some calculation heavy code here
repository.insertData(some calculated data);
}
Я пытаюсь добавить Propagation.REQUIRE_NEW в doSomethingInParralel, но проблема в том, что первая создаваемая новая транзакция приостанавливает исходную транзакцию. с которым работает someFunc. И поскольку оригинал приостановлен, я не могу создавать больше параллельных транзакций. использование Propagation.NESTED не является вариантом, поскольку оно использует то же соединение, что и его родительская транзакция.
Как мне создать параллельные транзакции с отдельными подключениями к базе данных?< /п>
Подробнее здесь: https://stackoverflow.com/questions/792 ... rallelflux
Мобильная версия