使用带超时的 sping 的 restTemplate,如何检测超时?
Using sping's restTemplate with a timeout, how do I detect a timeout?
我已将我的 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)
如何处理两次超时?我假设会抛出异常?如果是这样,我可以捕获哪个特定异常,以便专门处理超时。我正在以不同的方式处理其他异常。
在 RestTemplate
的情况下,当请求超时时,Spring 将抛出 ResourceAccessException。该实例下的基础异常将是 java.net.SocketTimeoutException
和消息 'Read timed out'.
我已将我的 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)
如何处理两次超时?我假设会抛出异常?如果是这样,我可以捕获哪个特定异常,以便专门处理超时。我正在以不同的方式处理其他异常。
在 RestTemplate
的情况下,当请求超时时,Spring 将抛出 ResourceAccessException。该实例下的基础异常将是 java.net.SocketTimeoutException
和消息 'Read timed out'.