【问题标题】:Akka BalancingDispatcher ConfigAkka 平衡调度程序配置
【发布时间】:2013-04-13 21:02:19
【问题描述】:

我在 src/main/resources 中创建了一个文件 application.conf,如下所示:

balancing-dispatcher {
  type = BalancingDispatcher
  executor = "thread-pool-executor"
}

文件中没有其他内容。

在创建尝试使用调度程序的新 Actor(通过我使用 Akka TestKit 的测试套件)时,我收到以下错误消息:

[WARN] [04/13/2013 21:55:28.007] [default-akka.actor.default-dispatcher-2] [Dispatchers] Dispatcher [balancing-dispatcher] not configured, using default-dispatcher

然后我的程序可以正常运行,尽管只使用一个线程。

此外,我打算将我的程序打包到一个库中。 akka 文档说明了这一点:

If you are writing an Akka application, keep you configuration in application.conf at
the root of the class path. If you are writing an Akka-based library, keep its 
configuration in reference.conf at the root of the JAR file.

到目前为止,我已经尝试了这两种方法,但都没有奏效。

有什么想法吗?

【问题讨论】:

    标签: java scala akka


    【解决方案1】:

    由于找不到您的application.conf,我只能假设src/main/resources 不是您的构建路径的一部分(在不知道您用于构建的工具的情况下无法进一步评论)。

    一件小事:你为什么在那里使用"thread-pool-executor"?我们发现默认的 "fork-join-executor" 可以更好地扩展。

    您对一个线程的评论表明您只创建了一个演员;使用BalancingDispatcher 不会自动创建更多actor,您必须以某种方式告诉Akka 这样做(例如,手动或通过Router 创建同一actor 的多个实例)。

    reference.confapplication.conf 的问题更多是设置的性质之一。如果你的库想要从配置中获取自己的设置,那么默认值应该进入reference.conf;这就是设计理念,也是这个文件总是被隐式合并的原因。默认值应该只在那个文件中,而不是在代码中。

    【讨论】:

    • 它是我构建路径的一部分,因为我可以通过系统资源访问它。例如 println(getClass().getResource("/reference.conf")) 正确地列出了文件。我向 src/test/resources 添加了一个重复文件,但问题仍然存在。我还尝试将文件更改为 akka { actor { balance-dispatcher... } }。我在 akka-samples 中找不到带有自定义调度程序的示例 .conf 文件,是否可以在某个地方下载执行此操作的示例项目?请注意,我还生成了一组 Actor。
    • 我可以建议您在 akka-user ML 上发布所有详细信息吗?你似乎有一些特殊的问题,在 StackOverflow 上调试起来很尴尬。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多