zoukankan      html  css  js  c++  java
  • springboot(五)设置Httpclient和Spring的整合

    设置HttpclientSpring的整合

    import org.apache.http.client.config.RequestConfig;

    import org.apache.http.impl.client.CloseableHttpClient;

    import org.apache.http.impl.client.HttpClients;

    import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;

    import org.springframework.beans.factory.annotation.Autowired;

    import org.springframework.beans.factory.annotation.Value;

    import org.springframework.context.annotation.Bean;

    import org.springframework.context.annotation.Configuration;

    import org.springframework.context.annotation.PropertySource;

    import org.springframework.context.annotation.Scope;

    import com.taotao.common.httpclient.IdleConnectionEvictor;

    @Configuration

    @PropertySource(value = "classpath:httpclient.properties")

    public class HttpclientSpringConfig {

        @Value("${http.maxTotal}")

        private Integer httpMaxTotal;

        @Value("${http.defaultMaxPerRoute}")

        private Integer httpDefaultMaxPerRoute;

        @Value("${http.connectTimeout}")

        private Integer httpConnectTimeout;

        @Value("${http.connectionRequestTimeout}")

        private Integer httpConnectionRequestTimeout;

        @Value("${http.socketTimeout}")

        private Integer httpSocketTimeout;

        @Value("${http.staleConnectionCheckEnabled}")

        private Boolean httpStaleConnectionCheckEnabled;

        @Autowired

        private PoolingHttpClientConnectionManager manager;

        @Bean

        public PoolingHttpClientConnectionManager poolingHttpClientConnectionManager() {

            PoolingHttpClientConnectionManager poolingHttpClientConnectionManager = new PoolingHttpClientConnectionManager();

            // 最大连接数

            poolingHttpClientConnectionManager.setMaxTotal(httpMaxTotal);

            // 每个主机的最大并发数

            poolingHttpClientConnectionManager.setDefaultMaxPerRoute(httpDefaultMaxPerRoute);

            return poolingHttpClientConnectionManager;

        }

        // 定期关闭无效连接

        @Bean

        public IdleConnectionEvictor idleConnectionEvictor() {

            return new IdleConnectionEvictor(manager);

        }

        // 定义Httpclient

        @Bean

        @Scope("prototype")

        public CloseableHttpClient closeableHttpClient() {

            return HttpClients.custom().setConnectionManager(this.manager).build();

        }

        // 请求配置

        @Bean

        public RequestConfig requestConfig() {

            return RequestConfig.custom().setConnectTimeout(httpConnectTimeout) // 创建连接的最长时间

                    .setConnectionRequestTimeout(httpConnectionRequestTimeout) // 从连接池中获取到连接的最长时间

                    .setSocketTimeout(httpSocketTimeout) // 数据传输的最长时间

                    .setStaleConnectionCheckEnabled(httpStaleConnectionCheckEnabled) // 提交请求前测试连接是否可用

                    .build();

        }

    }

    本人开发小白,所写随笔有转发、有心得、随笔、所见问题、或者感觉不错的东西,希望能帮助他人,同时也相当给自己方便!(未来及标明出处,望原作者以及读者见谅海涵!一切为了能解决问题。。。。)
  • 相关阅读:
    Java开发之富文本编辑器TinyMCE
    将博客搬至CSDN
    利用Docker搭建java项目开发环境
    Linux上传和下载之Xshell
    JSP中利用JSTL标签对日期格式化
    MySQL数据库localhost的root用户登陆遭遇失败
    CentOS7下 简单安装和配置Elasticsearch Kibana Filebeat 快速搭建集群日志收集平台(版本6.x)
    CentOS下递归遍历文件夹下所有文件,查找指定字符
    谷歌浏览器插件不让离线安装怎么办?
    X-Forwarded-For 会少记录一次代理服务器的IP
  • 原文地址:https://www.cnblogs.com/chengjiao/p/9633612.html
Copyright © 2011-2022 走看看