我正在使用
在play 2.1.5应用程序中实例化一个Actorlazy val ref = Akka.system.actorOf(Props[BackgroundProcessorActor], name = "background-processor")
我有一个属性文件,指定以下配置
application {
akka {
actor {
default-dispatcher = {
fork-join-executor {
parallelism-factor = 1.0
}
}
background-dispatcher = {
fork-join-executor {
parallelism-factor = 1.0
}
}
deployment = {
/background-processor = {
dispatcher = background-dispatcher
router = round-robin
nr-of-instances = 128
}
/solr_asset_updater = {
dispatcher = default-dispatcher
}
/solr_asset_log_updater = {
dispatcher = default-dispatcher
}
/change_queue_processor = {
dispatcher = default-dispatcher
}
}
}
}
}
我花了一些时间阅读文档和播放源代码。但是,background-processor
具体router = round-robin
和nr-of-instances = 128
的部署设置似乎没有采用。
是否有必要指定
lazy val ref = Akka.system.actorOf(Props[BackgroundProcessorActor].withRouter(FromConfig()), name = "background-processor")
对我来说,这似乎是多余的。我错过了什么?
答案 0 :(得分:1)
Play的Akka插件中的actor系统名为application
,但使用顶级配置(不是子配置)。您可以通过设置日志级别轻松测试。
akka {
loglevel = "DEBUG"
actor {
...
}
}
答案 1 :(得分:1)
回答问题
是否需要指定(FromConfig)
lazy val ref = Akka.system.actorOf(Props[BackgroundProcessorActor].withRouter(FromConfig()), name = "background-processor")
akka中文档的答案
另一方面,是否要创建路由器的决定必须在代码中进行,即您不能仅通过外部配置来制作路由器(详见下文)。
实际上需要在代码中使用 withRouter 和路由器选项的规范,或者使用 FromConfig
从配置中使用