12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- package com.tzld.piaoquan.tencentad.config;
- import org.apache.http.client.config.RequestConfig;
- import org.apache.http.impl.client.CloseableHttpClient;
- import org.apache.http.impl.client.DefaultHttpRequestRetryHandler;
- import org.apache.http.impl.client.HttpClientBuilder;
- import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- @Configuration
- public class HttpClientConfig {
- /**
- * 链接建立的超时时间 ms
- */
- private static final int CONNECTION_TIMEOUT = 3000;
- /**
- * 响应超时时间 ms
- */
- private static final int SOCKET_TIMEOUT = 20000;
- /**
- * 每个路由的最大连接数
- */
- private static final int MAX_PER_ROUTE = 20;
- /**
- * 最大连接数
- */
- private static final int MAX_TOTAL = 100;
- /**
- * 重试次数,默认0
- */
- private static final int RETRY_COUNT = 3;
- /**
- * 从connection pool中获得一个connection的超时时间 ms
- */
- private static final int CONNECTION_WAIT_TIMEOUT = 2000;
- @Bean
- public CloseableHttpClient httpClient() {
- RequestConfig requestConfig = RequestConfig.custom()
- .setConnectTimeout(CONNECTION_TIMEOUT)
- .setSocketTimeout(SOCKET_TIMEOUT)
- .setConnectionRequestTimeout(CONNECTION_WAIT_TIMEOUT)
- .build();
- PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
- connectionManager.setMaxTotal(MAX_TOTAL); // 设置最大连接数
- connectionManager.setDefaultMaxPerRoute(MAX_PER_ROUTE); // 每个路由的最大连接数
- return HttpClientBuilder.create()
- .setDefaultRequestConfig(requestConfig)
- .setConnectionManager(connectionManager)
- .setRetryHandler(new DefaultHttpRequestRetryHandler(RETRY_COUNT, false))
- .build();
- }
- }
|