3

我在 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.

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

有任何想法吗?

4

1 回答 1

2

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

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

您对一个线程的评论表明您只创建了一个演员;使用 aBalancingDispatcher不会自动创建更多参与者,您必须告诉 Akka 以某种方式执行此操作(例如,手动或通过 a 创建同一参与者的多个实例Router)。

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

于 2013-04-14T13:09:17.807 回答