连接超时 VS 调用服务时读取超时

Ked*_*shi 5 java rest resttemplate

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

超时是从 YML 读取的,并在初始化剩余模板时设置。

例如,如果我有这样的场景:- 连接超时 = 5 秒,读取超时 = 3 秒

我的问题是什么时候会发生读取超时?

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

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

我搜索了相同的内容,但没有得到答案,因为我得到的信息是连接超时用于建立连接,并且在从连接读取时会发生读取,但是读取超时值是否包括连接超时值也不清楚。

这可能是基本问题,但是我很困惑,因此任何有关该问题的指导/指示都会有所帮助。

谢谢 !

编辑:我已经浏览了“ Spring Rest template readTimeOut ”,它说时钟在请求第一次到达该套接字时启动,并在以下任一者先到时停止:请求完成或达到 readTimeout但我在建立连接时理解为好吧,套接字将会受到影响。这是否意味着 readtimeout 也包括连接超时?

小智 1

他们彼此独立。比方说httpUrlConntection.setConnectTimeout(10000); httpUrlConntection.setReadTimeout(10000);

所以在 TCP 握手之前我们有 10 秒的时间。一旦触发读取,我们就有 10 秒的时间来读取数据包。如果响应未完全传输,则会引发异常。

对于概念理解: 套接字的连接超时和读取超时有什么区别?