RestTemplate的Read Time out问题

微信搜索【程序员画工师】关注更多Java编程技术、数据结构与算法、面试题相关内容。

在做微服务开发的过程中,A服务调用B服务,A服务出现了“java.net.SocketTimeoutException: Read timed out ”错误。

Read Time out 读写超时
指的是服务间建立连接成功后从服务器读取超时。我之所以会报超时,是因为B服务需要做大量的业务逻辑操作,而我的RestTemplateConfig配置文件ReadTimeout参数设置为5s,所以当调用B服务超过5s还没有返回时,A会抛出异常"java.net.SocketTimeoutException: Read timed out"。

** 解决办法 **
1、被调用方服务返回时间的优化;
2、 ReadTimeout大小可以根据被调用方的服务实际返回情况,设置稍大一些。

   @Bean
   public RestTemplate restTemplate(ClientHttpRequestFactory simpleClientHttpRequestFactory) {
       return new RestTemplate(simpleClientHttpRequestFactory);
   }
   @Bean
   public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
       SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
       factory.setReadTimeout(10000);//单位为ms
       factory.setConnectTimeout(5000);//单位为ms
       return factory;
   }

你可能感兴趣的:(RestTemplate)