【问题标题】:Set Timeout With WebClient使用 WebClient 设置超时
【发布时间】:2020-10-12 01:57:31
【问题描述】:
    @LoadBalanced 
    @Bean 
   public RestTemplate getRestTemplate() 
  {    
     HttpComponentClientHttpRequestFactory clientHttpRequestFactory=
             new HttpComponentClientHttpRequestFactory();
    
             clientHttpRequestFactory.setConnectTimeout(5000);
    
       return new RestTemplate(clientHttpRequestFactory); 
  }

我必须用 WebClient 替换上面的代码

@LoadBalanced
@Bean(name = "WebClient")
public WebClient.Builder getWebClientBuilder()
{
    // create HttpComponentClientHttpRequestFactory instance and it can not be
    //passed to builder method as an argument
    return WebClient.builder();
}

我需要一个替代方法来使用 WebClient 设置超时。

【问题讨论】:

    标签: spring-boot microservices resttemplate spring-webclient


    【解决方案1】:

    如果您希望特定请求超时,您可以执行以下操作:

    webClient.get()
            .uri("/employees")
            .retrieve()
            .bodyToFlux(Employee.class)
            .timeout(Duration.ofMillis(10_000))
    

    如果您希望将超时应用于所有请求,您可以像这样构建您的 Web 客户端:

    @Bean
        public WebClient getWebClient()
        {
            HttpClient httpClient = HttpClient.create()
                    .tcpConfiguration(client ->
                            client.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 10000)
                            .doOnConnected(conn -> conn
                                    .addHandlerLast(new ReadTimeoutHandler(10))
                                    .addHandlerLast(new WriteTimeoutHandler(10))));
             
            ClientHttpConnector connector = new ReactorClientHttpConnector(httpClient.wiretap(true));       
     
            return WebClient.builder()
                    .baseUrl("http://localhost:3000")
                    .clientConnector(connector)
                    .defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
                    .build();
        }
    }
    

    你可以在这里看到它

    https://howtodoinjava.com/spring-webflux/webclient-set-timeouts/

    【讨论】:

      猜你喜欢
      • 2018-06-14
      • 2018-08-06
      • 1970-01-01
      • 1970-01-01
      • 2012-09-01
      • 2015-06-30
      • 2018-02-24
      • 1970-01-01
      • 2012-04-02
      相关资源
      最近更新 更多