【问题标题】:Spring HTTP client timeout - webservice call - misresponseSpring HTTP 客户端超时 - Web 服务调用 - 响应错误
【发布时间】:2019-01-29 00:41:56
【问题描述】:

我有一个未知的应用程序正在使用我的 Spring Web 服务。

应用程序为每个 web 服务调用设置超时。

无论应用程序超时,服务器都会继续处理。

在收到错误响应(对超时 Web 服务调用的响应)时,是否存在任何其他 Web 服务调用的风险? Spring如何管理这个?鉴于每个连接通道都为特定的 web 服务调用打开,并且如果断开,应该无法检索响应,所以 HTTP 协议不处理这个问题吗?

【问题讨论】:

  • 客户端应用程序设置的超时 - 客户端超时后的 HTTP 客户端超时 HTTP 客户端应关闭流(输入/输出),超时应视为失败(默认情况下)。您应该向服务器端实现幂等请求,以允许客户端重试失败的请求。

标签: spring http timeout client


【解决方案1】:

作为开发人员,您应该尝试使对您的 Web 服务器的所有可能的 HTTP 请求都是幂等的。这意味着客户端必须能够重试失败的请求而不会出现新的可能错误,因为无法知道先前的(超时)请求结果。
客户端应自行处理 HTTP 客户端超时,并且(默认情况下)应将超时错误视为失败。您的客户端可能稍后会重复该请求,并且服务器端应该能够处理相同的请求。
不同任务的解决方案可能会有所不同,具体取决于复杂性(从 INSERT 语句到数据库或调度新的 CRON 作业以避免重复)。

【讨论】:

  • 考虑使用 Jsch SSH 隧道的应用程序,它调用远程 web 服务。这些连接不是到远程服务器专用连接吗?意思是,如果通道为该特定调用打开,那么 Spring 和 HTTP 协议如何管理此信息和此连接,以便知道该响应应该发送到特定通道?
猜你喜欢
  • 1970-01-01
  • 2015-04-29
  • 2014-09-04
  • 2012-10-30
  • 2012-11-14
  • 1970-01-01
  • 1970-01-01
  • 2020-12-31
  • 1970-01-01
相关资源
最近更新 更多