Ich bin ziemlich neu in der Programmierung mit dem Play-Framework sowie Akka, obwohl ich habe über sie gelesen für eine Weile. Ich starte jetzt eine Proof-of-Concept-Anwendung in der Standard/Basic-Play-Umgebung. Meine Frage stammt von dem Web Service Client API in Play (http://www.playframework.org/documentation/2.0/ScalaWS).Verwenden von Akka, um Web-Service-Anrufe von Play App
Diese Anwendung muss Anrufe auf einem Remote-SOAP-Webdienst so skalierbar und performant wie möglich vermitteln. Der Browser macht Ajax-Aufrufe in JSON, die Play-App muss sie in SOAP/XML und umgekehrt in die Antwort umwandeln.
Wenn ich den Play-Web-Service-Client direkt über den Controller verwendet habe, können diese Aufrufe asynchron sein, was viel besser ist als das, was wir jetzt tun (Blockierung). Mir ist jedoch nicht klar, wie sich das genau unter schwerer Last verhalten würde. Wird das Nebeneinander/Thread-Management weitgehend dem zugrundeliegenden Netty-Server überlassen? Kann ich es irgendwie tunen? Eine Alternative wäre, ein Akka-Actor-System von den Controllern zu verwenden, wo ich die Routing-Richtlinie, die Poolgröße, Fehlertoleranz usw. steuern kann. Wenn ich diesen Ansatz anwende, wäre es immer noch sinnvoll, Play async WS zu verwenden Klient? Wenn ja, wäre dieser Ansatz (des Komponierens von Futures?) Das empfohlene Muster? Ein weiterer Faktor, der den Akka - Ansatz attraktiver erscheinen lässt, ist, dass diese Anwendung letztendlich mehrere andere Verantwortlichkeiten haben würde, so dass wir die Ressourcen dieses ActorSystems kontrollieren/abstimmen und das Risiko reduzieren könnten, dass die gesamte App vom Server gezogen wird SOAP-Dienst.
Eigentlich war die zweite Option, über die ich mich wunderte, eine Art Doppelasync. Könnten die Akteure weiterhin die WS-API (oder den zugrunde liegenden asynchronen http-Client) verwenden? – anchormath
Sie erhalten ein Versprechen mit WS-Anforderungen zurück. Die Schauspieler können es immer noch benutzen. – iwalktheline