我有以下场景:
应用程序中有两个API调用:api1
和api2
。
从多个用户多次调用api1
。我想阻止api1
调用的所有响应,直到调用api2
。将使用一个参数调用api2
,该参数建议“释放”特定api1
调用的响应。因此,每当调用api2
时,一个特定的api1
调用将响应,直到现在才被阻止(根据api1
调用中传递的参数,可能存在多个api2
释放)。
我想在grails中实现这一点。我有点空白如何实现这一点。有任何想法吗?
如果您知道可用于实现此目的的任何其他语言或框架,请分享。
我想到的解决方案是在api1调用上使用互斥锁并在api2
中释放它。您可能必须考虑api1
的超时。
编辑
好吧,你可以有一个字典/互斥的地图,每个调用都有一个相应的互斥锁。当客户端调用api1
时,服务器会生成一个互斥锁并将其添加到字典中,它也会尝试锁定互斥锁(默认情况下会锁定)。之后在api2
上你只需要提供你在字典中用来解锁互斥锁的id。