如何使用Akka actors来处理Akka中的HTTP请求
问题描述:
我是一般的Akka HTTP和Scala的新手。我正在尝试使用Akka actors来处理HTTP请求。当遇到HTTP请求时,相应的子actor被激活。目前,这是我的演员逻辑:如何使用Akka actors来处理Akka中的HTTP请求
trait CorsDirective extends BasicDirectives { actor: Actor =>
private def createResponder(requestContext: RequestContext) = {
context.actorOf(Props(new CorsResponder(requestContext)))
}
val corsRoute = {
path("corsdirective") {
get {
requestcontext =>
val corsresponder = createResponder(requestcontext)
corsresponder ! "corsdirectiveactiviated"
}
}
}
}
class CorsResponder(requestcontext: RequestContext) extends Actor {
override def receive: Receive = {
case String => requestcontext.complete("The cors directive was called here")
}
}
现在我怎么插到我的主要程序,该程序是这样的:
答
当您CorsResponder
收到一条消息,要回复给发件人。所以,做这样的事情:
class CorsResponder(requestcontext: RequestContext) extends Actor {
override def receive: Receive = {
case String => sender ! "The cors directive was called here"
}
}
使用ask
模式来完成您的请求:
import akka.pattern.ask
import context.dispatcher // You will want to pass it to corsRoute as its argument
(corsresponder ? "corsdirectiveactiviated").mapTo[String] { result =>
case message => complete(message)
}
嗨@Branislav,我想知道怎么我的主要方法是看?谢谢 – BigDataScholar