2012-04-30 127 views
0

如果我有一个Web API服务(订单通知),允许第三方客户端调用(它们必须调用我们,不要用力推它们)定期(每10分钟)和获得尚未收到的新订单,我如何处理失败?与Web API故障处理

例如,客户端自上次呼入后未收到10个新订单。客户端调用订单通知服务。我们检索我们尚未发送的订单(在这种情况下为10)。我们将这10份订单更新为已发送并将响应返回给客户端。

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

所以现在我们有一个问题,在我们这边,我们已经标记了发送的订单,但客户从未收到它们。

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

回答

0

只是一个想法,你可以给调用者分配一些标识符,当调用者成功时,它回复说他已经确认了请求?除非客户端报告,否则服务器永远不会知道客户端是否失败。

例如,当主叫方的请求,调用它可以做这样的事情:

call -> http://server/requests 

服务器包含结果此呼叫者的唯一标识符一起设定一些XML来回复,这将跟踪知道如果特定呼叫有应答(你可以超时的一段合理时间后,这个标识符)

当客户得到它可以调用再次

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

并且服务器将其标记为成功。

许多API需要某种形式的识别令牌,所以它已经很适合这种发送/确认消息系统。

0

如果这样一旦客户拿起数据已收到它使原来的主机,告诉它成功接收到的请求访问您可以创建一个接收到的请求,系统的两侧。