Skip to content

Commit

Permalink
[#1038]Http client manager add idletimeout and timetolive configurati…
Browse files Browse the repository at this point in the history
…on (#1039)
  • Loading branch information
liubao68 authored May 23, 2023
1 parent 11641e6 commit afc11b2
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ public class HttpClientProperties {

private int readTimeoutInMilliSeconds = 30000;

private int connectionIdleTimeoutInMilliSeconds = 30000;

private int connectionTimeToLiveInMilliSeconds = -1;

private int poolSizePerRoute = 50;

private int poolSizeMax = 5000;
Expand Down Expand Up @@ -65,4 +69,20 @@ public int getPoolSizeMax() {
public void setPoolSizeMax(int poolSizeMax) {
this.poolSizeMax = poolSizeMax;
}

public int getConnectionIdleTimeoutInMilliSeconds() {
return connectionIdleTimeoutInMilliSeconds;
}

public void setConnectionIdleTimeoutInMilliSeconds(int connectionIdleTimeoutInMilliSeconds) {
this.connectionIdleTimeoutInMilliSeconds = connectionIdleTimeoutInMilliSeconds;
}

public int getConnectionTimeToLiveInMilliSeconds() {
return connectionTimeToLiveInMilliSeconds;
}

public void setConnectionTimeToLiveInMilliSeconds(int connectionTimeToLiveInMilliSeconds) {
this.connectionTimeToLiveInMilliSeconds = connectionTimeToLiveInMilliSeconds;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@

package com.huaweicloud.common.transport;

import java.util.concurrent.TimeUnit;

import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.HttpClientBuilder;
Expand All @@ -32,7 +34,8 @@ public class ClientTransportConfiguration {
@Bean
@ConditionalOnMissingBean
public HttpClient transportHttpClient(HttpClientProperties httpClientProperties) {
PoolingHttpClientConnectionManager pool = new PoolingHttpClientConnectionManager();
PoolingHttpClientConnectionManager pool = new PoolingHttpClientConnectionManager(
httpClientProperties.getConnectionTimeToLiveInMilliSeconds(), TimeUnit.MILLISECONDS);
pool.setDefaultMaxPerRoute(httpClientProperties.getPoolSizePerRoute());
pool.setMaxTotal(httpClientProperties.getPoolSizeMax());
return HttpClientBuilder.create()
Expand All @@ -42,6 +45,8 @@ public HttpClient transportHttpClient(HttpClientProperties httpClientProperties)
.setConnectionRequestTimeout(httpClientProperties.getConnectionRequestTimeoutInMilliSeconds())
.setSocketTimeout(httpClientProperties.getReadTimeoutInMilliSeconds())
.build())
.evictExpiredConnections().evictIdleConnections(
httpClientProperties.getConnectionIdleTimeoutInMilliSeconds(), TimeUnit.MILLISECONDS)
.build();
}
}

0 comments on commit afc11b2

Please sign in to comment.