如何在SocketTimeoutException之后自动重新连接?

时间:2016-05-25 15:50:48

标签: java spring resttemplate apache-commons-httpclient

我为连接设置了超时。

HttpClient httpClient = org.apache.http.impl.client.HttpClientBuilder.create().build();

HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
factory.setConnectTimeout((int) TimeUnit.MINUTES.toMillis(2));
factory.setReadTimeout((int) TimeUnit.MINUTES.toMillis(2));
factory.setHttpClient(httpClient);

RestTemplate restTemplate = new RestTemplate(factory);

我想在SocketTimeoutException之后再次发送请求5次。我怎么能自动完成?

1 个答案:

答案 0 :(得分:1)

int tries, maxRetries = 5;
Connection connection;
do {
    try {
        // initialize connection
    } catch (SocketTimeoutException ex) {
        ++tries;
        if (maxRetries < tries) {
            // exit 
        }
        // sleep for some time between attempts
    }
} while (connection == null);

您可以像上面一样使用简单的do while循环。