【问题标题】:Spring WebClient : Implement Fallback methodSpring WebClient:实现 Fallback 方法
【发布时间】:2020-07-20 15:55:35
【问题描述】:

我想在我的实际 API 耗时超过 1 秒时调用我的备用 API

@GetMapping("/{id}")
    public String getDetailsById(@PathVariable Long id) {
        var url = getAPIUrl(id);

        var response = webClient.get()
                .uri(url)
                .retrieve()
                .onStatus(HttpStatus::isError,this::myFallBackMethod)
                .bodyToMono(String.class)
                .timeout(Duration.ofSeconds(1))

                .block();


        return response;
    }

   private Mono<? extends Throwable> myFallBackMethod(ClientResponse clientResponse) {
        return Mono.just("");

    }

我得到两个编译异常

不兼容的类型

无法解析方法 myFallBackMethod

如何处理回退并返回字符串?

【问题讨论】:

    标签: spring spring-webflux


    【解决方案1】:

    我能够做到我调用函数onErrorResume

    @GetMapping("/{id}")
        public String getDetailsById(@PathVariable Long id) {
            var url = getAPIUrl(id);
    
            var response = webClient.get()
                    .uri(url)
                    .retrieve()
                    .bodyToMono(String.class)
                    .timeout(Duration.ofSeconds(1))
                    .onErrorResume(throwable -> myFallBackMethod(id,throwable))
                    .block();
    
    
            return response;
        }
    
        private Mono<? extends String> myFallBackMethod(Long id, Throwable throwable) {
          return Mono.just("test sample");
        }
    

    【讨论】:

      猜你喜欢
      • 2020-09-16
      • 2021-01-28
      • 2023-03-21
      • 1970-01-01
      • 2020-04-05
      • 1970-01-01
      • 2021-08-02
      • 2018-06-30
      • 2021-03-27
      相关资源
      最近更新 更多