Как совершать вызовы к внешним службам параллельно с реактивной JavaJAVA

Программисты JAVA общаются здесь
Anonymous
Как совершать вызовы к внешним службам параллельно с реактивной Java

Сообщение Anonymous »

Я использую Java 17, и мне хотелось бы знать эффективный способ параллельных вызовов с использованием реактивного программирования.
В примере, показанном ниже, у меня есть 3 вызова внешних служб. Каждый из них заполняет объект, который будет отправлен при последнем вызове: serviceFour.callServiceFour(resultMap).

Код: Выделить всё

@Service
public class ExternalServiceImpl {

private final ServiceOne serviceOne;
private final ServiceTwo serviceTwo;
private final ServiceThree serviceThree;
private final ServiceFour serviceFour;

public Mono makeSequentialCalls() {

Map resultMap = new LinkedHashMap();

return serviceOne.callServiceOne()
.doOnNext(response -> resultMap.put("service1", response))
.flatMap(response -> serviceTwo.callServiceTwo())
.doOnNext(response -> resultMap.put("service2", response))
.flatMap(response -> serviceThree.callServiceThree())
.doOnNext(response -> resultMap.put("service3", response))
// Send the response
.flatMap(response -> serviceFour.callServiceFour(resultMap));
}
}
Идея состоит в том, что вызовы служб 1, 2 и 3 выполняются параллельно и, наконец, когда они завершаются, вызывается служба 4 для отправки полного ответа.
Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/787 ... ctive-java

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