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

标签 java rest resttemplate

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

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

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

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

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

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

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

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

谢谢 !

编辑:我已经完成了“Spring rest template readTimeOut”,它说时钟在请求第一次命中该套接字时开始,并在其中任何一个先出现时停止:请求完成或达到 readTimeout 但我在建立连接时也理解会有命中套接字。这是否意味着 readtimeout 也包括连接超时?

最佳答案

它们彼此独立。
比方说 httpUrlConntection.setConnectTimeout(10000); httpUrlConntection.setReadTimeout(10000);所以我们在 TCP 握手发生之前有 10 秒的时间。一旦读取被触发,我们有 10 秒的时间来读取数据包。如果响应未完全传输,则抛出异常。
对于概念理解:
What is the difference between connection and read timeout for sockets?

关于java - 调用服务时连接超时 VS 读取超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52027333/

相关文章:

iphone - 在 iPhone 应用程序中使用 RestKit 的最佳方式

java - 如何使用 REST Web 服务器维护登录状态?

spring-boot - 升级到2.2.4后无法运行Spring Boot应用程序:方法不存在

java - SpringBoot 2.15 中 RestTemplateBuilder 中的类转换问题

java - 带有 Maven 的 Tomcat7,未应用 contextReloadable

java - JTextArea 在创建文本区域时仅换行一次

java - 并发中的意外行为 (Java)

java - java的AtomicBitSet实现

ruby-on-rails - 使用 curl 对 Rails 应用程序的 RESTful 请求忽略 AuthenticityToken

java - Spring Rest 模板 Json 输出映射到对象