Используя sping restTemplate с тайм-аутом, как мне определить тайм-аут?
Я инициализировал мой restTemplate следующим образом:
HttpClient httpClient = HttpClientBuilder.create().build();
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient);
requestFactory.setConnectTimeout(1000);
requestFactory.setReadTimeout(1000);
restTemplate = new RestTemplate(requestFactory);
и я называю это так:
restTemplate.getForEntity(someString, String.class, SomeHashmapWithURLParameters)
Как мне справиться с обоими тайм-аутами? Я предполагаю, что исключение будет брошено? Если да, то какое конкретное исключение я могу поймать, чтобы конкретно обрабатывать только тайм-ауты. Я разбираю другие исключения по-разному.
1 ответ
Решение
В случае RestTemplate
Когда истечет время ожидания запроса, Spring выдаст ResourceAccessException. Основным исключением в этом случае будет java.net.SocketTimeoutException
с сообщением "Тайм-аут чтения".