作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个使用 Actor 来处理请求的 Play 应用程序。应用程序大纲将是这样的..
MyController extends Controller {
system.actorOf(Props(new MyRequestProcessor))
val actorRef = MyRequestProcessor
def handle(parse.json) { request =>
actorRef ! request.body
Ok
}
基本上我想把 MyRequestProcessor actor 放在 Supervisor actor 下。由于 Controller 是由 Play Framework 创建的,我不知道在 Supervisor 中创建 RequestProcessor 并取回 ActorRef 的首选方法。
希望代码是这样的...
Supervisor extends Actor {
override val supevisorStrategy = OneForOneStrategy….
}
MyController extends Controller {
val supervisorRef = system.actorOf(Props[Supervisor]...
val processorRef = //NEED A WAY TO INSTANTIATE MyRequestProcessor WITHIN
//Supervisor and get that ActorRef back Using Supervisor's context.actorOf[]
def handle(parse.json) { request
processorRef ! request.body
}
}
最佳答案
请自取。
import akka.actor._
import akka.pattern.ask
import scala.concurrent.Await
import scala.concurrent.duration._
import akka.util.Timeout
object Supervisor {
case object GetChild
}
class Supervisor(childProps: Props) extends Actor {
import Supervisor._
val child = context.actorOf(childProps, name = "child")
def receive = {
case GetChild => sender ! child
}
}
class Child extends Actor {
def receive = Actor.emptyBehavior
}
object MyController extends Controller {
val system = ActorSystem("my-system")
val supervisor = system.actorOf(Props(classOf[Supervisor], Props[Child]), name = "parent")
implicit val timeout = Timeout(5 seconds)
// Blocking is not ideal, but is not the point in this example anyway
val child = Await.ready((supervisor ? GetChild).mapTo[ActorRef], timeout.duration)
}
关于playframework - 剧中监督 Actor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18404335/
我是一名优秀的程序员,十分优秀!