小编典典

Spring Rest模板readTimeOut

spring-boot

我试图了解restTemplate上的readTimeout,这到底是什么?

这是请求获得超时异常之前可以花费的总时间吗?


阅读 664

收藏
2020-05-30

共1个答案

小编典典

您可以在上定义读取超时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带有异常消息的消息:“读取超时”。

超时实际上是由HttpClient实例内部的套接字连接器实现的,该实例由包裹,RestTemplate因此,时钟首先在请求首次到达该套接字时开始,并在其中任何一个先到达时停止:请求完成或达到readTimeout。

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

2020-05-30