• resttemplate的ReadTimeout和ConnectTimeout


    问题描述:
    今天,在做微服务开发中,A服务区调用B服务,获取数据做导出excel操作。A服务出现了“java.net.SocketTimeoutException: Read timed out ”错误。

    ConnectTimeout 连接超时

    指的是 建立连接超时,也就是 A服务连接不上B服务,也许是B服务挂掉了,会抛出"java.net.SocketException: connetct time out",也许是网络差到不能建立连接的地步。

    ReadTimeout 读写超时

    指的是建立连接成功后 从服务器读取超时,就像我遇到的这种情况样。B服务需要查询大量的数据,进行准备。A在一定时间后,抛出"java.net.SocketTimeoutException: Read timed out

    ConnectionRequestTimeout

    连接不共用的时候,等待连接超时。

    关于参数的设置

    建议:
    ConnectTimeout大小视网络环境
    ReadTimeout大小视应用程序操作,适当大一点。
    ConnectionRequestTimeout 不宜过长。

     
        @Configuration
        public class BeanConfig{
            @Bean
            public RestTemplate createRestTemplate(){
                HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory();
                httpRequestFactory.setConnectionRequestTimeout(3000);
                httpRequestFactory.setConnectTimeout(3000);
                httpRequestFactory.setReadTimeout(6000);
        
                return new RestTemplate(httpRequestFactory);
            }
        }
     
  • 相关阅读:
    未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包
    Only one instance of a ScriptManager can be added to the page.
    springboot SSM
    spring mvc 请求转发和重定向
    Spring Boot 配置 Swagger2 接口文档引擎
    solr
    jQuery
    反向代理负载均衡-Nginx
    mybatis二级缓存
    Vue的路由
  • 原文地址:https://www.cnblogs.com/exmyth/p/16450299.html
Copyright © 2020-2023  润新知