Dopo aver utilizzato Play! Quadro per un po ', sto dando un primo sguardo a Spray. Ho iniziato da un campione che ho trovato su GitHub, ora voglio modificarlo ma non è facile per me capire come funziona.Chiamare un attore in un percorso Spray e attendere la risposta dell'attore
Come posso attendere un messaggio da un attore nel codice qui sotto?
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
// ???
}
}
}
}
Non ho scritto il nostro codice di instradamento quindi non conosco il modo migliore ma in generale non si aspetta mai: invece si passa la richiesta ad un attore o forse ad un attore avvolto in un futuro tramite un tell che è responsabile per inviare la risposta una volta completata l'elaborazione. – Rup
Sono nuovo di Spray, quindi non posso trarre alcun vantaggio dalla tua risposta. Avrei bisogno di un frammento di codice. – Max