Spring 休息模板 readTimeOut

新手上路,请多包涵

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

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

原文由 Seb 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 307
2 个回答

您可以在 RestTemplate 上定义读取超时,如下所示:

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

RestTemplate restTemplate = new RestTemplate(clientRequestFactory);

给定 X 毫秒的 readTimeout,通过该 RestTemplate 实例发出的任何花费超过 X 毫秒的请求都将导致 ResourceAccessException 包装一个 java.net.SocketTimeoutException 异常消息:“读取超时”。

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

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

原文由 glytching 发布,翻译遵循 CC BY-SA 4.0 许可协议

据我所知,在 restTemplate 我们有 3 种类型的超时

  1. 连接请求超时。这是从 connectionManager 获取连接的超时时间(以毫秒为单位)

  2. 连接超时。这是在源和目标之间建立连接的超时时间(以毫秒为单位)

  3. 读取超时。这是以毫秒为单位的超时,预计应从目标端点返回响应/结果。

原文由 Dhana 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题