Setting timeouts in Spring Rest Template

2019-03-02 14:06发布

Application is using Spring rest template to call a webservice and i am using
restTemplate.exchage(url) to call the webservice. Currently we are not passing any timeout value for this webservice call, How can i set a timeout value for Spring Rest template.

2条回答
祖国的老花朵
2楼-- · 2019-03-02 14:32

You can use code similar to following for setting connection timeout:

RestTemplate restTemplate = new RestTemplate();
((SimpleClientHttpRequestFactory)restTemplate.getRequestFactory()).setConnectTimeout(2000);

If your wish to set read timeout, you can have code similar to following:

((SimpleClientHttpRequestFactory)restTemplate.getRequestFactory()).setReadTimeout(2000);

The time is given in milliseconds here. For more info, you can visit the documentation page.

查看更多
等我变得足够好
3楼-- · 2019-03-02 14:47

I use this approach based on these threads

int DEFAULT_TIMEOUT = 5000;
RequestConfig requestConfig = RequestConfig.custom()
 .setConnectTimeout(DEFAULT_TIMEOUT)
 .setConnectionRequestTimeout(DEFAULT_TIMEOUT)
 .setSocketTimeout(DEFAULT_TIMEOUT)
 .build();

CloseableHttpClient httpClient = HttpClients.custom() .setDefaultRequestConfig(requestConfig) .build();

Spring RestTemplate Connection Timeout is not working

Java : HttpClient 4.1.2 : ConnectionTimeout, SocketTimeout values set are not effective

查看更多
登录 后发表回答