Nachher haben Play verwendet! Framework für eine Weile, ich sehe einen ersten Blick auf Spray. Ich habe mit einem Sample begonnen, das ich auf GitHub gefunden habe, jetzt möchte ich es modifizieren, aber es ist nicht einfach für mich zu verstehen, wie es funktioniert.Einen Schauspieler in einer Spray-Route anrufen und auf die Antwort des Actors warten
Wie kann ich auf eine Nachricht von einem Actor im folgenden Code warten?
package api
import akka.actor.ActorRef
import scala.concurrent.ExecutionContext
import spray.routing.Directives
import core.ClassifierActor
class ClassifierService(classifier: ActorRef)(implicit executionContext: ExecutionContext)
extends Directives with DefaultJsonFormats {
import ClassifierActor._
implicit val classifyMessageFormat = jsonFormat4(ClassifyMessage)
val route =
path("classify") {
post {
handleWith {
// The ClassifierActor gets a ClassifyMessage and
// sends a ClassifiedMessage back to the sender.
// How can wait for the ClassifiedMessage here
// and send a HttpResponse back?
cm: ClassifyMessage => classifier ! cm
// ???
}
}
}
}
Ich habe unseren Routingcode nicht geschrieben, also weiß ich nicht den besten Weg, aber im Großen und Ganzen wartest du nie: Stattdessen übergibst du die Anfrage an einen Schauspieler oder einen Schauspieler, der in Zukunft über einen Tell, der dafür verantwortlich ist, ist Senden der Antwort, sobald die Verarbeitung abgeschlossen ist. – Rup
Ich bin neu in Spray, also kann ich keinen Vorteil aus Ihrer Antwort bekommen. Ich brauche lieber einen Code-Schnipsel. – Max