呼叫服务时连接超时VS读取超时

时间:2018-08-26 14:42:55

标签: java rest resttemplate

我正在尝试使用REST模板从Spring MVC应用程序调用REST API。 这样做时,我们必须设置超时值(连接超时和读取超时),并保持在YML文件中。

从YML读取超时,并在初始化rest模板时设置超时。

例如,如果我有类似:- 连接超时= 5秒,读取超时= 3秒

我的问题是何时会发生读取超时?

考虑最坏的情况(连接在第5秒建立,将在第8秒[在第3秒收到响应]吗?)之后读取超时?

这两个超时时间是否相互依赖?

我搜索了相同的内容,但是没有得到答案,因为我获得了信息,因为连接超时是用于建立连接的,因此从连接读取时将进行读取,但是读取超时值是否也包括连接超时值尚不清楚。

这可能是一个基本问题,但是我很困惑,因此任何有关此方面的指导/指标都将有所帮助。

谢谢!

EDIT:我经历了“ Spring rest template readTimeOut”,它说时钟在请求首次到达该套接字时开始,并在其中任何一个先到达时停止:请求完成或达到readTimeout ,但我知道在建立连接时也会碰到套接字。这是否意味着readtimeout也包括连接超时?

1 个答案:

答案 0 :(得分:0)

它们是相互独立的。 假设httpUrlConntection.setConnectTimeout(10000); httpUrlConntection.setReadTimeout(10000);

所以我们有 10 秒的时间才能发生 TCP 握手。一旦读取被触发,我们有 10 秒的时间来读取数据包。如果响应未完全传输,则抛出异常。

对于概念理解: What is the difference between connection and read timeout for sockets?