我正在使用带有webflux堆栈的Springboot 2。
在应用程序中,我希望与下游服务并行地发出多个HTTP请求,以减少返回客户端的总体响应时间。这可能没有玩线程吗?
我目前正在使用org.springframework.web.reactive.function.client.WebClient
,但对支持此功能的其他客户开放;甚至RXJava。
答案 0 :(得分:2)
我设法通过下面的方式实现它。这是一个简单的例子,但async / 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);
}