【问题标题】:Dealing with a web api failure处理 web api 失败
【发布时间】:2012-05-10 09:35:50
【问题描述】:

如果我有一个 web api 服务(订单通知),它允许第三方客户端定期(每 10 分钟)打电话(他们必须打电话给我们,而不是使用推送给他们)并获得新的订单,但它没有还没收到,失败怎么处理?

例如,客户自上次调用以来尚未收到 10 个新订单。客户调用我们的订单通知服务。我们检索尚未发送的订单(在本例中为 10 个)。我们将这 10 个订单更新为已发送并将响应返回给客户端。

但是客户端没有收到响应(有时在离开我们之后发生,例如 http 超时或其他)。

所以现在我们遇到了一个问题,我们将订单标记为已发送,但客户从未收到。

关于如何解决这个问题的任何想法?

【问题讨论】:

    标签: web-services api http httpwebrequest


    【解决方案1】:

    如果您可以访问系统的两端,您可以创建一个接收请求,这样一旦客户端接收到数据,它就会向原始主机发出请求,告知它已成功接收。

    【讨论】:

      【解决方案2】:

      只是一个想法,您能否为调用者分配某种标识符,当调用者成功时,它会回复说它已确认请求?除非客户端报告,否则服务器永远不会知道客户端是否出现故障。

      例如,当调用者 A 调用请求时,它可能会执行以下操作:

      call -> http://server/requests
      

      服务器回复一些 xml,其中包含此调用者的结果集以及唯一标识符,它将跟踪以了解该特定调用是否有响应(您可以在一段合理的时间后使此标识符超时)

      当客户端收到请求时,它可以再次回调

      call -> http://server/requestComplete?id=[generatedID]
      

      服务器将其标记为成功。

      许多 API 需要某种标识令牌,因此它已经很适合这种发送/确认消息传递系统。

      【讨论】:

        猜你喜欢
        • 2014-10-06
        • 2020-06-10
        • 2018-12-06
        • 1970-01-01
        • 1970-01-01
        • 2012-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多