|
19 | 19 |
|
20 | 20 | import lombok.extern.slf4j.Slf4j; |
21 | 21 | import org.apache.hc.client5.http.classic.methods.HttpPost; |
| 22 | +import org.apache.hc.client5.http.config.ConnectionConfig; |
| 23 | +import org.apache.hc.client5.http.config.RequestConfig; |
22 | 24 | import org.apache.hc.client5.http.entity.mime.MultipartEntityBuilder; |
23 | 25 | import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; |
24 | 26 | import org.apache.hc.client5.http.impl.classic.HttpClientBuilder; |
|
28 | 30 | import org.apache.hc.client5.http.ssl.NoopHostnameVerifier; |
29 | 31 | import org.apache.hc.core5.http.HttpEntity; |
30 | 32 | import org.apache.hc.core5.http.io.entity.EntityUtils; |
| 33 | +import org.apache.hc.core5.util.Timeout; |
31 | 34 | import org.laokou.common.i18n.common.constant.StringConstants; |
32 | 35 | import org.laokou.common.i18n.common.exception.SystemException; |
33 | 36 | import org.laokou.common.i18n.util.ObjectUtils; |
@@ -105,16 +108,28 @@ public static String doFormDataPost(String url, Map<String, String> params, Map< |
105 | 108 | } |
106 | 109 |
|
107 | 110 | public static CloseableHttpClient getHttpClient() throws NoSuchAlgorithmException, KeyManagementException { |
108 | | - // 创建HttpClient对象 |
109 | | - HttpClientBuilder httpClientBuilder = HttpClientBuilder.create(); |
110 | 111 | DefaultClientTlsStrategy tlsStrategy = new DefaultClientTlsStrategy(SslUtils.sslContext(), |
111 | 112 | NoopHostnameVerifier.INSTANCE); |
112 | | - PoolingHttpClientConnectionManager poolingHttpClientConnectionManager = PoolingHttpClientConnectionManagerBuilder |
113 | | - .create() |
| 113 | + // 请求配置 |
| 114 | + RequestConfig requestConfig = RequestConfig.custom() |
| 115 | + .setResponseTimeout(Timeout.ofSeconds(10)) |
| 116 | + .setConnectionRequestTimeout(Timeout.ofSeconds(5)) |
| 117 | + .build(); |
| 118 | + // 连接配置 |
| 119 | + ConnectionConfig connectionConfig = ConnectionConfig.custom() |
| 120 | + .setConnectTimeout(Timeout.ofSeconds(5)) |
| 121 | + .setSocketTimeout(Timeout.ofSeconds(5)) |
| 122 | + .setTimeToLive(Timeout.ofSeconds(90)) // 连接存活最多90s,到期自动废弃 |
| 123 | + .build(); |
| 124 | + // 连接池管理配置 |
| 125 | + PoolingHttpClientConnectionManager cm = PoolingHttpClientConnectionManagerBuilder.create() |
| 126 | + .setMaxConnTotal(500) // 设置最大连接数 |
| 127 | + .setMaxConnPerRoute(100) // 设置每个路由的最大连接数 |
| 128 | + .setDefaultConnectionConfig(connectionConfig) |
114 | 129 | .setTlsSocketStrategy(tlsStrategy) |
115 | 130 | .build(); |
116 | | - httpClientBuilder.setConnectionManager(poolingHttpClientConnectionManager); |
117 | | - return httpClientBuilder.build(); |
| 131 | + // HttpClient |
| 132 | + return HttpClientBuilder.create().setConnectionManager(cm).setDefaultRequestConfig(requestConfig).build(); |
118 | 133 | } |
119 | 134 |
|
120 | 135 | } |
0 commit comments