Как обрабатывать транзакции в ParallelFlux?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как обрабатывать транзакции в ParallelFlux?

Сообщение Anonymous »

У нас есть очень перерабатывающий конвейер для тяжелых флюсов. Чтобы ускорить его, мы используем параллельный поток. Но теперь проблема в том, что все ожидает подключения к базе данных, и оно все еще медленное. Весь конвейер в настоящее время находится в рамках одной большой транзакции. Как обрабатывать параллельныйFlux с транзакциями, чтобы вставки в БД не слишком сильно блокировали друг друга? База данных — Postgresql, мы используем r2dbc. Или еще лучше, если разные параллельные ветви будут использовать разные соединения.
Упрощенный пример
@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);
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... rallelflux
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»