genannt wird ich folgendes Szenario haben:Blocking eine Antwort REST-API, bis eine andere API
Es gibt zwei API-Aufrufe in einer Anwendung: api1
und api2
.
api1
wird mehrmals von mehreren Benutzern aufgerufen. Ich möchte alle Antworten von api1
Anrufe blockieren, bis api2
aufgerufen wird. api2
wird mit einem Parameter aufgerufen, der vorschlagen würde, die Antwort eines spezifischen Aufrufs api1
"freizugeben". Wenn also api2
aufgerufen wird, wird ein bestimmter api1
Anruf antworten, der bis jetzt blockiert wurde (es kann mehrere api1
Freigaben basierend auf dem Parameter geben, der in api2
Anruf übergeben wird).
Ich möchte dies in Grails implementieren. Ich weiß nicht, wie ich das umsetzen soll. Irgendwelche Ideen?
Teilen Sie, wenn Sie eine andere Sprache oder Framework kennen, die verwendet werden kann, um dies zu implementieren.
Es ist mir auch eingefallen. Aber ich kannte die praktische Umsetzung des genauen Szenarios mit Mutex nicht. Timeout ist kein Problem, da ich es in der aufrufenden Anwendung (Consumer-Anwendung, die die APIs aufruft) bewusst auf einen ausreichend hohen Wert setzen würde. –
Können Sie auf die Implementierung hinweisen? –
Nun, Sie können ein Wörterbuch/eine Map von Mutex haben, wo jeder Aufruf einen entsprechenden Mutex hat. Wenn ein Client api1 aufruft, generiert er einen Mutex und fügt ihn dem Dictionary hinzu. Außerdem versucht er, den Mutex zu entsperren (standardmäßig gesperrt). Danach müssen Sie auf der api2 nur die ID angeben, die Sie im Wörterbuch verwendet haben, um den Mutex zu entsperren. –