Akka actor外部化部署配置

时间:2015-03-21 01:03:24

标签: playframework-2.0 akka

我正在使用

在play 2.1.5应用程序中实例化一个Actor
lazy 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-robinnr-of-instances = 128的部署设置似乎没有采用。

是否有必要指定

lazy val ref = Akka.system.actorOf(Props[BackgroundProcessorActor].withRouter(FromConfig()), name = "background-processor")
对我来说,这似乎是多余的。我错过了什么?

2 个答案:

答案 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

从配置中使用