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();

        }

    }

    本人开发小白,所写随笔有转发、有心得、随笔、所见问题、或者感觉不错的东西,希望能帮助他人,同时也相当给自己方便!(未来及标明出处,望原作者以及读者见谅海涵!一切为了能解决问题。。。。)
  • 相关阅读:
    355. Design Twitter
    54. Spiral Matrix
    143. Reorder List
    324. Wiggle Sort II
    365. Water and Jug Problem
    洛谷 P3527 [POI2011]MET-Meteors 解题报告
    洛谷 P4592 [TJOI2018]异或 解题报告
    单调序列 解题报告
    洛谷 P4735 最大异或和 解题报告
    洛谷 P1527 [国家集训队]矩阵乘法 解题报告
  • 原文地址:https://www.cnblogs.com/chengjiao/p/9633612.html
Copyright © 2011-2022 走看看