亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何組合兩個異步 webclient 調用,假設一個調用遇到異常

如何組合兩個異步 webclient 調用,假設一個調用遇到異常

千萬里不及你 2022-12-28 16:22:21
我正在使用 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 responceMono<Address>  addressResponseMono =webClient.get()           .uri("/getAddress/" + bookingId)           .headers(headers->headers.addAll(args))           .retrieve()           .bodyToMono(Address.class);// encounter readtimeout exceptionTuple2<BookResponse, Address> resp = bookResponseMono.zipWith(addressResponseMono).block();// throws exception but 我想壓縮兩個響應以及異常。
查看完整描述

1 回答

?
當年話下

TA貢獻1890條經驗 獲得超9個贊

onErrorResume為我解決上述問題。


bookResponseMono = webClient.get()

    .uri("/getBooking/" + bookingId)

    .headers(headers->headers.addAll(args))

    .retrieve()

    .bodyToMono(String.class)

    .onErrorResume(err -> {

        BookResponse bookResponse = new BookResponse();

        bookResponse.setError(setError(err));

        return Mono.just(setError(err));

    });


addressResponseMono = webClient.get()

    .uri("/getAddress/" + bookingId)

    .headers(headers -> headers.addAll(args))

    .retrieve()

    .bodyToMono(String.class)

    .onErrorResume(err -> {

        Address address = new Address();

        address.setError(setError(err));

        return Mono.just(setError(err));

    });

最后拉上拉鏈


bookAndAddressResponse = bookResponseMono

    .zipWith(addressResponseMono, BookAndAddressResponse::new)

    .block();


查看完整回答
反對 回復 2022-12-28
  • 1 回答
  • 0 關注
  • 133 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號