代码之家  ›  专栏  ›  技术社区  ›  n00b

在SpringBoot+WebFlux中进行并行请求

  •  0
  • n00b  · 技术社区  · 7 年前

    我正在用WebFlux堆栈玩SpringBoot2。

    在应用程序中,我希望将多个HTTP请求与下游服务并行,以减少返回到客户机的总体响应时间。在不玩弄线程的情况下,这是可能的吗?

    我正在使用 org.springframework.web.reactive.function.client.WebClient 但是对其他支持它的客户机开放,甚至是RxJava。

    1 回复  |  直到 7 年前
        1
  •  2
  •   n00b    7 年前

    我设法做到了下面这样。这是一个幼稚的例子,但是异步/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);
    }