问题与Akka 2.5.x中的调度程序配置有关。
我想避免由于系统消息未传递而导致节点被隔离的线程饥饿问题。为了实现这一点,我想创建一个单独的调度程序,该调度程序与默认调度程序配置完全相同。
我已经定义了名称为my-dispatcher {...}
的自定义调度程序配置。我可以使用以下内容使Akka对所有用户演员使用此调度程序吗?
akka.actor.deployment {
"/**" { # <- should this work?
dispatcher = my-dispatcher
...
}
想法来自文档中的以下示例:
# all direct children of '/user/actorC' have a dedicated dispatcher
"/actorC/*" {
dispatcher = my-dispatcher
}
因此,如果我将actorC
替换为**
,它将以/user
下的所有参与者为目标,我希望它会起作用。有人这样做吗?还是我需要找到其他解决方案?
答案 0 :(得分:1)
据我检查您的方法是否有效,它会覆盖 user 路径下所有参与者中的调度程序。
尽管更常规的配置默认调度程序的方法是仅覆盖akka.actor.default-dispatcher
下的config中的条目(您只能覆盖其中的一些条目),例如:
akka {
actor {
default-dispatcher {
fork-join-executor {
parallelism-min = 2
}
throughput = 100
}
}
如果您默认使用在config中用不同路径定义的调度程序,则可以使用default-dispatcher
覆盖my-dispatcher
部分:
akka.actor.default-dispatcher = ${path.to.my-dispatcher}