123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- package com.huaxu.config;
- import org.apache.http.client.HttpClient;
- import org.apache.http.client.config.RequestConfig;
- import org.apache.http.config.Registry;
- import org.apache.http.config.RegistryBuilder;
- import org.apache.http.conn.socket.ConnectionSocketFactory;
- import org.apache.http.conn.socket.PlainConnectionSocketFactory;
- import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
- import org.apache.http.impl.client.HttpClientBuilder;
- import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
- import org.springframework.beans.factory.annotation.Autowired;
- 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;
- /**
- * @author 孤
- * @version v1.0
- * @Developers 张耀烽
- * @serviceProvider 四叶草安全(SeClover)
- * @description http工厂配置
- * @date
- */
- @Configuration
- public class RestTemplateConfig {
- @Autowired
- private ApplicationValues appValues;
- @Bean
- public RestTemplate restTemplate() {
- return new RestTemplate(httpRequestFactory());
- }
- @Bean
- public ClientHttpRequestFactory httpRequestFactory() {
- return new HttpComponentsClientHttpRequestFactory(httpClient());
- }
- @Bean
- public HttpClient httpClient() {
- Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create()
- .register("http", PlainConnectionSocketFactory.getSocketFactory())
- .register("https", SSLConnectionSocketFactory.getSocketFactory())
- .build();
- PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(registry);
- connectionManager.setMaxTotal(appValues.getMaxTotal());
- connectionManager.setDefaultMaxPerRoute(appValues.getMaxPerRoute());
- connectionManager.setValidateAfterInactivity(appValues.getInactivity());
- RequestConfig requestConfig = RequestConfig.custom()
- //服务器返回数据(response)的时间,超过抛出read timeout
- .setSocketTimeout(appValues.getSocketTimeout())
- //连接上服务器(握手成功)的时间,超出抛出connect timeout
- .setConnectTimeout(appValues.getConnTimeOut())
- //从连接池中获取连接的超时时间,超时间未拿到可用连接,会抛出org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for connection from pool
- .setConnectionRequestTimeout(appValues.getConnReqTimeOut())
- .build();
- return HttpClientBuilder.create()
- .setDefaultRequestConfig(requestConfig)
- .setConnectionManager(connectionManager)
- .build();
- }
- }
|