Beim Lesen der play2-Dokumentation habe ich folgendes gefunden:
Wegen der Funktionsweise von Play 2.0 muss der Aktionscode so schnell sein wie möglich (d. h. nicht blockierend). Also, was sollten wir als Ergebnis zurückgeben, wenn wir können sie noch nicht berechnen? Die Antwort sollte ein Versprechen von a sein Ergebnis!
Wow! Das hat mich natürlich an playakka und akka . Ich entwickle gerade eine Autocomplete-Anwendung, die in elasticsearch integriert ist, also wäre das eine perfekte Passform!
Controller:
%Vor%Service:
%Vor%Suchwort:
%Vor%Der Code funktioniert sehr gut, aber ich muss sagen, dass ich nicht sicher bin, ob ich das richtig umgesetzt habe. Ich habe wirklich Mühe, die Dokumentation zu verstehen. Meine Fragen sind im Grunde:
=====
%Vor%AFAIK, dein Code ist völlig in Ordnung.
Ich könnte mich irren, aber ich denke, dass die zweite Option genau der ersten entspricht, da die Methode Akka.future()
ein Wrapper um die Methode Akka.promise()
ist.
Aus der Akka Klassenquellcode von Play 2.0.4 :
%Vor%Obwohl Sie das Versprechen und die Zukunft korrekt implementiert haben, würde ich diesen Code nicht als "nicht blockierend" betrachten ...
Es scheint, dass der blockierende Anruf
ist %Vor%und obwohl dies jetzt in ein Versprechen / Zukunft verpackt ist, ist es immer noch ein Blockieranruf ... Wenn Sie wirklich blockierungsfrei sein wollen (mit all seinen Vorteilen), müssen Sie Ihren Datenzugriff (Abfragen) nicht blockierend machen ...
Oh, und eine nicht blockierende Aktionsmethode sollte ein Versprechen eines Ergebnisses und kein Ergebnis zurückgeben ...
So sollte ich deinen Code schreiben:
%Vor%Hoffe, das hilft!
Tags und Links java akka actor playframework-2.0 promise