Po użyciu Play! Ramy na chwilę spoglądam na Spray. Zacząłem od próbki, którą znalazłem na GitHub, teraz chcę ją zmodyfikować, ale nie jest mi łatwo zrozumieć, jak to działa.Wywołanie aktora na trasie natrysku i oczekiwanie na odpowiedź aktora
Jak mogę czekać na wiadomość od aktora w poniższym kodzie?
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
// ???
}
}
}
}
Nie napisałem naszego kodu trasy, więc nie wiem najlepiej, ale zasadniczo nigdy nie czekasz: zamiast tego przekazujesz tę prośbę aktorowi lub aktorowi, który został zawinięty w przyszłości za pomocą polecenia odpowiedzialnego za wysłanie odpowiedzi po zakończeniu przetwarzania. – Rup
Jestem nowy w Sprayu, więc nie mogę uzyskać żadnej korzyści z twojej odpowiedzi. Wolę fragment kodu. – Max