zoukankan      html  css  js  c++  java
  • spring的RestTemplate连接池相关配置

    转发:https://blog.csdn.net/weixin_33724659/article/details/93338398?utm_medium=distribute.pc_relevant_right.none-task-blog-BlogCommendFromMachineLearnPai2-7.nonecase&depth_1-utm_source=distribute.pc_relevant_right.none-task-blog-BlogCommendFromMachineLearnPai2-7.nonecase

    import org.apache.http.conn.HttpClientConnectionManager;
    import org.apache.http.impl.client.HttpClientBuilder;
    import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
    import org.springframework.boot.web.client.RestTemplateBuilder;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.http.client.ClientHttpRequestFactory;
    import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
    import org.springframework.web.client.RestTemplate;
    
    /**
     * spring的RestTemplate连接池相关配置
     * 
     * @project common-utils
     * @fileName RestTemplateConfiguration.java
     * @Description
     * @author light-zhang
     * @date 2019年4月29日
     * @version 1.0.0
     */
    @Configuration
    public class RestTemplatePoolConfig {
        /**
         * 让spring管理RestTemplate,参数相关配置
         * 
         * @param builder
         * @return
         */
        @Bean
        public RestTemplate restTemplate(RestTemplateBuilder builder) {
            RestTemplate restTemplate = builder.build();// 生成一个RestTemplate实例
            restTemplate.setRequestFactory(clientHttpRequestFactory());
            return restTemplate;
        }
    
        /**
         * 客户端请求链接策略
         * 
         * @return
         */
        @Bean
        public ClientHttpRequestFactory clientHttpRequestFactory() {
            HttpComponentsClientHttpRequestFactory clientHttpRequestFactory = new HttpComponentsClientHttpRequestFactory();
            clientHttpRequestFactory.setHttpClient(httpClientBuilder().build());
            clientHttpRequestFactory.setConnectTimeout(6000); // 连接超时时间/毫秒
            clientHttpRequestFactory.setReadTimeout(6000); // 读写超时时间/毫秒
            clientHttpRequestFactory.setConnectionRequestTimeout(5000);// 请求超时时间/毫秒
            return clientHttpRequestFactory;
        }
    
        /**
         * 设置HTTP连接管理器,连接池相关配置管理
         * 
         * @return 客户端链接管理器
         */
        @Bean
        public HttpClientBuilder httpClientBuilder() {
            HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
            httpClientBuilder.setConnectionManager(poolingConnectionManager());
            return httpClientBuilder;
        }
    
        /**
         * 链接线程池管理,可以keep-alive不断开链接请求,这样速度会更快 MaxTotal 连接池最大连接数 DefaultMaxPerRoute
         * 每个主机的并发 ValidateAfterInactivity
         * 可用空闲连接过期时间,重用空闲连接时会先检查是否空闲时间超过这个时间,如果超过,释放socket重新建立
         * 
         * @return
         */
        @Bean
        public HttpClientConnectionManager poolingConnectionManager() {
            PoolingHttpClientConnectionManager poolingConnectionManager = new PoolingHttpClientConnectionManager();
            poolingConnectionManager.setMaxTotal(1000);
            poolingConnectionManager.setDefaultMaxPerRoute(5000);
            poolingConnectionManager.setValidateAfterInactivity(30000);
            return poolingConnectionManager;
        }
    }
  • 相关阅读:
    php 学习笔记 数组2
    php 学习笔记 数组1
    jQuery prop 全选和全不全
    jquery获取多个checkbox的值异步提交给php
    php 计算多维数组中所有值的总和
    系统状态码原型
    hadoop win10开发环境
    kafka spring整合版本匹配
    mac 安装brew
    hadoop2.8.5 idea2019.1.3插件安装
  • 原文地址:https://www.cnblogs.com/zxf330301/p/12974329.html
Copyright © 2011-2022 走看看