WANG 5 anni fa
parent
commit
aa04e4d4b8

+ 8 - 4
src/main/java/cn/com/qmth/examcloud/web/cloud/CloudClientConfiguration.java

@@ -1,6 +1,7 @@
 package cn.com.qmth.examcloud.web.cloud;
 
 import java.io.IOException;
+import java.util.concurrent.TimeUnit;
 
 import org.apache.http.impl.client.HttpClientBuilder;
 import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
@@ -117,6 +118,7 @@ public class CloudClientConfiguration {
 		Boolean poolEnable = PropertyHolder.getBoolean("examcloud.rpc.pool.enable", true);
 
 		int maxTotal = PropertyHolder.getInt("examcloud.rpc.pool.maxTotal", 200);
+		long timeToLive = PropertyHolder.getLong("examcloud.rpc.pool.timeToLive", 60);
 		int defaultMaxPerRoute = PropertyHolder.getInt("examcloud.rpc.pool.defaultMaxPerRoute", 10);
 		int connectTimeout = PropertyHolder.getInt("examcloud.rpc.connectTimeout", 2000);
 		int readTimeout = PropertyHolder.getInt("examcloud.rpc.readTimeout", 60000);
@@ -124,11 +126,13 @@ public class CloudClientConfiguration {
 		HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
 
 		if (poolEnable) {
-			PoolingHttpClientConnectionManager poolingConnectionManager = new PoolingHttpClientConnectionManager();
-			poolingConnectionManager.setMaxTotal(maxTotal);
-			poolingConnectionManager.setDefaultMaxPerRoute(defaultMaxPerRoute);
+			PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(
+					timeToLive, TimeUnit.SECONDS);
+			cm.setValidateAfterInactivity(1000);
+			cm.setMaxTotal(maxTotal);
+			cm.setDefaultMaxPerRoute(defaultMaxPerRoute);
 
-			httpClientBuilder.setConnectionManager(poolingConnectionManager);
+			httpClientBuilder.setConnectionManager(cm);
 		}
 
 		HttpComponentsClientHttpRequestFactory clientHttpRequestFactory = new HttpComponentsClientHttpRequestFactory();