【发布时间】:2019-06-02 19:54:33
【问题描述】:
我正在使用 spring boot 2.x 并使用 webclient 进行两个异步调用,我在一个调用中得到了正确的响应,而另一个调用遇到了一些异常。 我想使用 zip 方法将两个响应压缩在一起,但是在使用带有 zip 的块时,它会引发异常并控制流来捕获块。我希望两个响应都与一个或两个中的异常一起压缩。请指导我如何做到这一点。
Mono<BookResponse> bookResponseMono =webClient.get()
.uri("/getBooking/" + bookingId).headers(headers->headers.addAll(args)
.retrieve()
.bodyToMono(BookResponse.class);// with proper responce
Mono<Address> addressResponseMono =webClient.get()
.uri("/getAddress/" + bookingId)
.headers(headers->headers.addAll(args))
.retrieve()
.bodyToMono(Address.class);// encounter readtimeout exception
Tuple2<BookResponse, Address> resp = bookResponseMono.zipWith(addressResponseMono).block();// throws exception but
我想压缩两个响应以及异常。
【问题讨论】:
-
看来你有两个选择 1) 不要使用 try/catch 2) 在 always 中执行 zip
-
另一种方法是为
addressResponseMono提供错误处理程序(onErrorReturn、doOnError等)。 -
感谢 Randy 和 Adhika 的快速响应,onErrorResume 为我工作。
标签: java spring-boot spring-webflux