客户角度的幂等键

时间:2019-11-14 17:52:24

标签: rest http microservices

假设我有一个API,它调用名为/charge(POST)的下游服务的API。假设在进行充电时,反向代理发生超时,我得到了5xx。但是指控实际上发生了。

在这种情况下,我将以5xx回应我的消费者。现在,如果使用者使用相同的幂等键进行呼叫,则他的请求可以成功,因为下游服务将返回响应的缓存副本。但是,如果他在调用我的API时使用其他幂等密钥,则他将继续获得409s,因为已经付款了。

这是我的两个问题:

  1. 客户端如何知道何时使用相同的idempotentId重试或完全发起新请求?

  2. (扩展上一个问题),UI如何决定使用不同的幂等ID?每个新请求都包含一个新ID,只有重试逻辑会重用同一ID吗?

基本上,我正在尝试从客户端了解幂等密钥 的观点。

1 个答案:

答案 0 :(得分:0)

在将失败响应返回给用户之前,应自动重试几次超时。因此,如果错误是暂时性的,则用户将不会注意到任何问题(除非响应延迟可以忽略不计)。

请求发起系统应维护所有请求及其状态的日志。因此,如果故障持续较长时间,则系统可以定期重试失败的请求,并向用户提供已提交请求的详细UI视图。这消除了用户重试请求的需要。系统将代表用户执行此操作。