Выполнение параллельных запросов из Springboot + Webflux - PullRequest
0 голосов
/ 23 мая 2018

Я работаю со Springboot 2 со стеком webflux.

Внутри приложения я пытаюсь сделать несколько HTTP-запросов параллельно нижестоящим сервисам, чтобы сократить общее время ответа клиенту.Возможно ли это без игры с потоками?

В настоящее время я использую org.springframework.web.reactive.function.client.WebClient, но открыт для других клиентов, которые поддерживают это;или даже RXJava.

1 Ответ

0 голосов
/ 24 мая 2018

Мне удалось достичь этого, как показано ниже.Это наивный пример, но асинхронные / http запросы выполняются в downstream.request1() и downstream.request2().Если бы это был более элегантный способ добиться этого, мне было бы интересно.

@GetMapping("/sample")
public Mono<String> getMultipleRequests() {
    Mono<String> monoResponse1 = downstream.request1();
    Mono<String> monoResponse2 = downstream.request2();

    return Mono.zip(monoResponse1, monoResponse2)
        .flatMap(a -> myTransform(a));
}

private Mono<String> myTransform(Tuple2<String, String> tuple) {
    String t1 = tuple.getT1();
    String t2 = tuple.getT2();
    return Mono.just(t1 + t2);
}
...