33import org .apache .hc .client5 .http .config .RequestConfig ;
44import org .apache .hc .client5 .http .impl .classic .CloseableHttpClient ;
55import org .apache .hc .client5 .http .impl .classic .HttpClientBuilder ;
6+ import org .apache .hc .client5 .http .impl .io .PoolingHttpClientConnectionManager ;
67import org .apache .hc .core5 .http .ClassicHttpRequest ;
78import org .apache .hc .core5 .http .ContentType ;
89import org .apache .hc .core5 .http .io .entity .EntityUtils ;
@@ -35,6 +36,8 @@ public enum DEFAULTS {
3536 // client configuration options like timeouts, forwarding ..
3637 private RequestConfig .Builder clientConfigBuilder ;
3738
39+ private final PoolingHttpClientConnectionManager connectionManager ;
40+
3841 private boolean secureConnection = true ;
3942
4043 public HttpClient (Map <String ,Object > headers , int connectTimeoutSeconds , int readTimeoutSeconds ) {
@@ -44,6 +47,10 @@ public HttpClient(Map<String,Object> headers, int connectTimeoutSeconds, int rea
4447 .setConnectTimeout (Timeout .ofSeconds (connectTimeoutSeconds ))
4548 .setResponseTimeout (Timeout .ofSeconds (readTimeoutSeconds ));
4649
50+ this .connectionManager = new PoolingHttpClientConnectionManager ();
51+ connectionManager .setMaxTotal (100 );
52+ connectionManager .setDefaultMaxPerRoute (25 );
53+
4754 this .client = buildClient ();
4855 }
4956
@@ -144,7 +151,11 @@ public CloseableHttpClient getClient() {
144151 * @return initialized HTTP client
145152 */
146153 private CloseableHttpClient buildClient () {
147- return HttpClientBuilder .create ().setDefaultRequestConfig (clientConfigBuilder .build ()).build ();
154+ return HttpClientBuilder
155+ .create ()
156+ .setDefaultRequestConfig (clientConfigBuilder .build ())
157+ .setConnectionManager (connectionManager )
158+ .build ();
148159 }
149160
150161 /**
0 commit comments