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