spring的RestTemplate连接池相关配置
2021-01-07 06:28
标签:weixin import cti task connect hang 速度 nec ret 转发: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 spring的RestTemplate连接池相关配置 标签:weixin import cti task connect hang 速度 nec ret 原文地址:https://www.cnblogs.com/zxf330301/p/12974329.htmlimport 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;
}
}
文章标题:spring的RestTemplate连接池相关配置
文章链接:http://soscw.com/index.php/essay/40645.html