Search code examples
javaspring-bootspring-securityhttpclient

how to use setMaxConnPerRoute and setMaxConnTotal with httpclient5?


setMaxConnPerRoute() and setMaxConnTotal() are not available with HttpClientBuilder for httpclient5 migrating httpclient 4.5 to 5.2 for spring boot 3 compatibility. Below is the reference code:

BasicHttpClientConnectionManager cm = new BasicHttpClientConnectionManager();
cm.setConnectionConfig(connConfig);

CloseableHttpClient client = HttpClientBuilder.create()
    .disableAutomaticRetries()
    .setDefaultRequestConfig(RequestConfig.custom()
        .setConnectionRequestTimeout(Timeout.ofMilliseconds(30000))
        .build())
    .setConnectionManager(cm)
    .setMaxConnPerRoute(50)
    .setMaxConnTotal(200)
    .build();

Solution

  • As said in the comments, use the PoolingHttpClientConnectionManagerBuilder:

     var connectionManager = PoolingHttpClientConnectionManagerBuilder.create()
         .setMaxConnPerRoute(50)
         .setMaxConnTotal(200)
         .setConnectionConfig(/* add connectionConfig */)
         .build();
    
     var client = HttpClients.custom()
         .disableAutomaticRetries()
         .setDefaultRequestConfig(/* add requestConfig */)
         .setConnectionManager(connectionManager)
         .build();