【发布时间】:2026-01-12 12:40:01
【问题描述】:
我正在使用 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")
}
}
【问题讨论】:
-
play 2.4 中的方法是什么?
标签: playframework-2.0 akka reactivemongo