diff --git a/CHANGES.md b/CHANGES.md index 428e0b88337..e67b0b78c40 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,6 +6,8 @@ Apollo 2.4.0 ------------------ * [Update the server config link in system info page](https://github.com/apolloconfig/apollo/pull/5204) +* [Feature support portal restTemplate Client connection pool config](https://github.com/apolloconfig/apollo/pull/5200) + ------------------ All issues and pull requests are [here](https://github.com/apolloconfig/apollo/milestone/15?closed=1) diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/RestTemplateFactory.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/RestTemplateFactory.java index de3d206107c..85611f74452 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/RestTemplateFactory.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/RestTemplateFactory.java @@ -20,6 +20,7 @@ import com.ctrip.framework.apollo.portal.component.config.PortalConfig; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.boot.autoconfigure.http.HttpMessageConverters; @@ -59,8 +60,14 @@ public boolean isSingleton() { } public void afterPropertiesSet() throws UnsupportedEncodingException { + + PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(); + connectionManager.setMaxTotal(portalConfig.connectPoolMaxTotal()); + connectionManager.setDefaultMaxPerRoute(portalConfig.connectPoolMaxPerRoute()); + CloseableHttpClient httpClient = HttpClientBuilder.create() .setConnectionTimeToLive(portalConfig.connectionTimeToLive(), TimeUnit.MILLISECONDS) + .setConnectionManager(connectionManager) .build(); restTemplate = new RestTemplate(httpMessageConverters.getConverters()); diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/config/PortalConfig.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/config/PortalConfig.java index 9548da9c05a..93b9e93daf2 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/config/PortalConfig.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/config/PortalConfig.java @@ -173,6 +173,14 @@ public int connectionTimeToLive() { return getIntProperty("api.connectionTimeToLive", -1); } + public int connectPoolMaxTotal() { + return getIntProperty("api.pool.max.total", 20); + } + + public int connectPoolMaxPerRoute() { + return getIntProperty("api.pool.max.per.route", 2); + } + public List organizations() { String organizations = getValue("organizations");