2017-08-16 81 views
1

我想了解restTemplate上的readTimeout,它究竟是什么?Spring rest模板readTimeOut

它是在我们得到超时异常之前请求可以花费的总时间量吗?

回答

2

您可以在RestTemplate定义读取超时如下:

HttpComponentsClientHttpRequestFactory clientRequestFactory = new HttpComponentsClientHttpRequestFactory(); 
// set the read timeot, this value is in miliseconds 
clientRequestFactory.setReadTimeout(500); 

RestTemplate restTemplate = new RestTemplate(clientRequestFactory); 

鉴于X米利斯一个readTimeout,通过RestTemplate实例,它需要更长的时间比X米利斯将导致提出的任何要求一个ResourceAccessException,包装一个java.net.SocketTimeoutException与异常消息:“读取超时”。

的超时由插座连接器的HttpClient实例,它被包裹由RestTemplate所以当请求首先撞击其插座,并且当这些以先到者为准停止时钟开始内部实际实现:在请求完成或readTimeout是到达。

实际上,这意味着任何比配置的readTmeout花费更长时间的请求都将失败并出现超时异常。

2

据我所知,在restTemplate我们有3个类型的超时 的1)ConnectionRequestTimeout 这是超时以毫秒为从的ConnectionManager获得连接

2)ConnectionTimeout 这是在毫秒时间超时用于建立之间的连接源和目的地

3)ReadTimeout 这是millis中的超时,它预计响应/结果应该从目标端点返回。