Akka BalancingDispatcher配置

时间:2013-04-13 21:02:20

标签: java scala akka

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

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

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

由于找不到application.conf,我只能假设src/main/resources不属于您的构建路径(如果不知道您用于构建哪个工具,则无法进一步评论)。

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

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

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