我正在使用 Play 的 Actor 系统为我的应用程序创建我的主管(根)actor。
我需要对这个根 Actor 做的第一件事是向它发送一条消息来配置它自己和一堆子 Actor。配置涉及使用 TypeSafe 配置 API 从 conf 文件中读取,然后将这些值加载到数据库(在本例中为 MongoDB)。由于我使用 reactivemongo 将配置从 conf 文件加载到数据库,因此它是完全非阻塞和异步的。控制器中的所有其他操作取决于加载到数据库的配置值。
我不清楚我应该在哪里创建这个演员?我尝试在我的控制器的构造函数中创建它,但是如果在异步加载完成之前调用了一个动作,我会得到一个异常。
我也尝试将它放在 Global.onStart() 中,但我又无法让主管进入我的控制器代码。
import play.api._
object Global extends GlobalSettings {
override def onStart(app: Application) {
Logger.info("Application has started")
val supervisor = Akka.system().actorOf(Props(new Supervisor()), "easupervisor")
}
}
我尝试直接在 Global 对象的构造函数中创建主管,但这也给了我一个播放初始化错误。
object Global extends GlobalSettings {
val supervisor = Akka.system().actorOf(Props(new Supervisor()), "easupervisor")
override def onStart(app: Application) {
Logger.info("Application has started")
}
}