阻塞 REST API 响应,直到另一个 API 被调用

Blocking a REST API response until another API is called

我有以下场景:

应用程序中有两个 API 调用:api1api2

api1 被多个用户多次调用。我想阻止 api1 调用的所有响应,直到 api2 被调用。 api2 将使用一个参数调用,该参数会建议 "release" 特定 api1 调用的响应。因此,每当 api2 被调用时,一个特定的 api1 调用将响应,该调用直到现在才被阻止(根据 api2 调用中传递的参数,可以有多个 api1 释放)。

我想在 grails 中实现它。我对如何实现这一点一无所知。有什么想法吗?

如果您知道可用于实现此功能的任何其他语言或框架,请分享。

我想到的一个解决方案是在 api1 调用上使用互斥锁并在 api2 中释放它。您可能需要考虑 api1.

的超时

编辑

好吧,您可以有一个 dictionary/map 互斥锁,其中每个调用都有一个相应的互斥锁。当客户端调用 api1 时,服务器会生成一个互斥量并将其添加到字典中,同时它会尝试锁定互斥量(默认情况下是锁定的)。之后在 api2 你只需要提供你在字典中使用的 id 来解锁互斥量。