import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
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.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder){
// 创建连接池管理器
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
connectionManager.setMaxTotal(200); // 设置整个连接池的最大连接数
connectionManager.setDefaultMaxPerRoute(20); // 设置每个路由的最大连接数
// 创建HttpClient实例
CloseableHttpClient httpClient = HttpClients.custom()
.setConnectionManager(connectionManager)
.build();
// 创建请求工厂并设置HttpClient
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient);
requestFactory.setConnectTimeout(10000); // 连接超时时间
requestFactory.setReadTimeout(5000); // 读取超时时间
// 创建RestTemplate实例
RestTemplate restTemplate = new RestTemplate(requestFactory);
return restTemplate;
}
}
如果不用连接池管理器会导致: 频繁调用接口导致连接超时