piyugupt
piyugupt

Reputation: 424

SpringBoot RestTemplate Connection Pooling: Managing Stale Connections

I am using RestTemplate with ConnectionPooling using PoolingHttpClientConnectionManager as in below code :

PoolingHttpClientConnectionManager connectionManager = new 
PoolingHttpClientConnectionManager();
    connectionManager.setMaxTotal(DEFAULT_MAX_TOTAL_CONNECTIONS);
    
connectionManager.setDefaultMaxPerRoute(DEFAULT_MAX_CONNECTIONS_PER_ROUTE);
    connectionManager.setMaxPerRoute(new HttpRoute(new 
HttpHost(excConfig.getImsServerEndpoint())), IMS_ROUTE_MAX_CONNECTIONS);

    CloseableHttpClient httpclient = HttpClients.custom().setConnectionManager(connectionManager).build();

    HttpComponentsClientHttpRequestFactory httpReqFactory = new HttpComponentsClientHttpRequestFactory(httpclient);
    httpReqFactory.setReadTimeout(DEFAULT_HTTP_TIMEOUT_MILLISECONDS);
    httpReqFactory.setConnectionRequestTimeout(DEFAULT_HTTP_TIMEOUT_MILLISECONDS);
    httpReqFactory.setConnectTimeout(DEFAULT_HTTP_TIMEOUT_MILLISECONDS);

    restTemplate = new RestTemplate(httpReqFactory);

Does RestTemplate take care of terminating stale connections by itself? Or do I need to put in some specific handling for the same?

Upvotes: 3

Views: 12782

Answers (2)

Dandy
Dandy

Reputation: 321

setStaleConnectionCheckEnabled has become obsolete.

HttpClients.custom() .setDefaultRequestConfig(RequestConfig.custom().setStaleConnectionCheckEnabled(true)) .setConnectionManager(connectionManager) .build();

In HttpClient 4.5.3 the below code works -

PoolingHttpClientConnectionManager connManager 
          = new PoolingHttpClientConnectionManager();
        connManager.setValidateAfterInactivity(20);

        HttpClient httpClient = HttpClients.custom().setConnectionManager(connManager).build();

Upvotes: 2

iamharish15
iamharish15

Reputation: 1850

By default it does not, but you can configure it easily in your CloseableHttpClient configuration.

CloseableHttpClient httpclient = HttpClients.custom()
    .setDefaultRequestConfig(RequestConfig.custom().setStaleConnectionCheckEnabled(true))
    .setConnectionManager(connectionManager)
    .build();`

Source here.

Upvotes: 2

Related Questions