我试图了解restTemplate上的readTimeout,这到底是什么?
这是请求获得超时异常之前可以花费的总时间吗?
您可以在上定义读取超时RestTemplate,如下所示:
RestTemplate
HttpComponentsClientHttpRequestFactory clientRequestFactory = new HttpComponentsClientHttpRequestFactory(); // set the read timeout, this value is in milliseconds clientRequestFactory.setReadTimeout(500); RestTemplate restTemplate = new RestTemplate(clientRequestFactory);
给定readTimeout为 X millis,通过该RestTemplate实例进行的任何请求所花的时间都比 X millis长,将导致出现ResourceAccessException,并包装一个java.net.SocketTimeoutException带有异常消息的消息:“读取超时”。
ResourceAccessException
java.net.SocketTimeoutException
超时实际上是由HttpClient实例内部的套接字连接器实现的,该实例由包裹,RestTemplate因此,时钟首先在请求首次到达该套接字时开始,并在其中任何一个先到达时停止:请求完成或达到readTimeout。
HttpClient
实际上,这意味着任何花费比配置的readTimeout更长的请求都将失败,并出现超时异常。