Ich entwickle einen kleinen Server in PlayFramework2/Scala, der Daten von mehreren WS (REST/JSON) abrufen, die Daten von diesen WS manipulieren, dann komponieren und ein Ergebnis zurückgeben muss.Mehrere WS-Aufruf in einer Aktion, wie mit Promise-Objekten umzugehen?
Ich weiß, wie eine WS aufrufen, manipulieren Sie die Daten und eine asynchrone Antwort zurück. Aber ich weiß nicht, wie man sukzessive mehrere Web-Dienste aufrufen, die Daten zwischen jedem Anruf behandeln und eine aggregierte Antwort generieren.
Exemple:
- Fetch die Liste meiner bevorzugten Songs aus WebService A
- dann, für jeden Song, holen Sie den Künstler Detail von WS B (ein Anruf von Lied)
- dann, generieren und etwas (aggregierte Liste zum Beispiel) mit der A und B respon ses
- Dann gibt das Ergebnis
I durch die asynchronen Verarbeitungen der WS API blockiert bin (WS.url(url).get => Promise[Response]
). Muss ich mich auf Akka stützen, um dieses Problem zu lösen?
Vielen Dank.
Vielen Dank für Ihre Antwort. Ich analysiere und teste diese Lösung so schnell wie möglich. – YoT
@julien Was passiert, wenn einer der Web-Service-Aufrufe Timeout oder 500 zurückgeben? getOrElse? –
Das Versprechen wird mit einem [Thrown] (http://www.playframework.org/documentation/api/2.0/scala/play/api/libs/concurrent/Thrown.html) Wert eingelöst. Sie können diesen Fall behandeln, indem Sie beispielsweise [extend] (http://www.playframework.org/documentation/api/2.0/scala/index.html#play.api.libs.concurrent.Promise) verwenden. –