从我看到的很多文章和商业API中,大多数人通过要求客户提供requestId或idempotent-key(例如https://www.masteringmodernpayments.com/blog/idempotent-stripe-requests)来使其API具有幂等性.基本上将requestId < - >响应映射存储在存储中.因此,如果有一个已经存在于此映射中的请求,则应用程序将仅返回存储的响应.
这对我来说都很好,但我的问题是如何处理第一次通话仍在进行中第二次通话的情况?
所以这是我的问题
我想理想的行为是第二个呼叫一直等到第一个呼叫结束并返回第一个呼叫的响应?人们这样做是怎么回事?
如果是,第二个呼叫等待第一个呼叫完成需要多长时间?
如果第二个呼叫有等待时间限制且第一个呼叫仍未完成,它应该告诉客户端什么?它是否应该不返回任何响应,以便客户端超时并再次重试?