【问题标题】:Are Akka .conf dispatcher configuration working?Akka .conf 调度程序配置是否有效?
【发布时间】:2013-06-13 23:06:12
【问题描述】:

我正在使用 Akka 2.2-RC1,但无法让 Akka 从 application.conf 加载调度程序配置:

my-dispatcher {
  type = PinnedDispatcher
  executor = "thread-pool-executor"
}

akka.actor.deployment {
  /test {
    dispatcher = my-dispatcher
  }
}

当从代码实例化时

 val test = system.actorOf(Props[Test], "test")

根据日志,它仍在使用akka.actor.default-dispatcher

当我将 .withDispatcher("my-dispatcher") 添加到 Props 时,一切正常,并且使用了 my-dispatcher。但我不喜欢将.withDispatcher(...) 添加到我的所有演员的想法...

有谁知道哪里出了问题?我在想演员路径可能是错误的,但 aplication.conf 路由配置工作正常(自定义 routee 调度程序除外)。


经过一些测试,我发现这个效果是由使用RemoteActorRefProvider引起的。一旦我禁用它并更改为默认值

akka.actor.provider = "akka.actor.LocalActorRefProvider"

调度程序从配置中正确配置。

我猜想启用远程处理后,Akka 会在别处寻找 Actor 调度程序的配置,或者远程 ref 可能有不同的逻辑路径?

【问题讨论】:

    标签: configuration akka dispatcher


    【解决方案1】:

    在您使用的同一版本的 akka 上,这对我来说效果很好。我的配置:

    test{
      my-dispatcher {
        type = PinnedDispatcher
        executor = "thread-pool-executor"
      }
    
      akka.actor.deployment {
        /test-actor {
          dispatcher = my-dispatcher
        }
      }
    }
    

    我的代码:

    object ActorTest{
      def main(args: Array[String]) {
        val conf = ConfigFactory.load()
        val system = ActorSystem("test", conf.getConfig("test"))
        val ref = system.actorOf(Props[TestActor], "test-actor")
      }
    }
    
    class TestActor extends Actor{
      def receive = {
        case _ =>
      }
    }
    

    我使用 jconsole 并显示固定调度程序列在“线程”选项卡下

    【讨论】:

    • 感谢您的信息,“测试”子配置确实有效。但是,一旦我将调度程序和部署配置移回“root” - 它就会停止工作。
    • 我发现问题是由akka.remote.RemoteActorRefProvider 引起的——禁用后一切正常。
    • 这听起来像是一个错误,您介意在我们的 assembla 跟踪器上开票吗?谢谢!
    • @Seigert,你会打开这个错误,因为你是发现它的人吗?
    猜你喜欢
    • 1970-01-01
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多