使用Play后!框架有一段时间,我正在第一次看Spray。我从我在GitHub上找到的一个示例开始,现在我想修改它,但要获得它的工作方式并不容易。在喷雾路线中调用演员并等待演员的响应
如何在下面的代码中等待来自演员的消息?
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
// ???
}
}
}
}
我没有编写我们的路由代码,所以我不知道最好的方法,但广泛地说,你永远不会等待:而是将请求交给一个演员,或者通过一个告诉负责一旦处理完成就发送回复。 – Rup 2014-10-11 11:12:28
我是Spray的新手,所以我无法从您的回复中获得任何优势。我宁愿需要一段代码。 – Max 2014-10-11 13:28:32