Akka 的 BalancingPool 调度器(BalancingDispatcher)是否每个 actor 一个线程?
Does Akka's BalancingPool dispatcher (BalancingDispatcher) have one thread per actor?
BalancingDispatcher 现已弃用,无法直接将 actor 分配给,但路由器的 BalancingPool 使用 BalancingDispatcher。
由于我们没有直接配置 BalancingDispatcher,我想知道 BalancingDispatcher 是否配置了等于 worker 数量的线程?
如果我们在代码中而不是在配置中生成 BalancingPool,这仍然以同样的方式工作吗?
提前感谢任何help/info!可能更适合在 Akka 邮件组中提问。或者我应该阅读源代码。
BalancingPool
确实为您为路由设置了平衡调度程序。可以通过提供 pool-dispatcher
setting 来配置使用的线程数和执行器。默认情况下它使用一个 fork join 执行器,所以你可以给它以下设置:
pool-dispatcher {
fork-join-executor { # force it to allocate exactly 5 threads
parallelism-min = 5
parallelism-max = 5
}
# executor = "thread-pool-executor" // can even change the executor here
#thread-pool-executor {
# core-pool-size-min = 1
# core-pool-size-factor = 2.0
# core-pool-size-max = 5
#}
}
如果您希望它正好使用 5 个线程。您可以参考 dispatcher docs 了解如何配置调度程序以及执行程序是什么。
PS:一般来说,Akka 问题通常在 akka-user mailing list 上得到最好的解决,团队在那里监控并帮助处理所有线程,但是也有一个活跃的 SO 社区,所以 "it depends" :-)
BalancingDispatcher 现已弃用,无法直接将 actor 分配给,但路由器的 BalancingPool 使用 BalancingDispatcher。
由于我们没有直接配置 BalancingDispatcher,我想知道 BalancingDispatcher 是否配置了等于 worker 数量的线程?
如果我们在代码中而不是在配置中生成 BalancingPool,这仍然以同样的方式工作吗?
提前感谢任何help/info!可能更适合在 Akka 邮件组中提问。或者我应该阅读源代码。
BalancingPool
确实为您为路由设置了平衡调度程序。可以通过提供 pool-dispatcher
setting 来配置使用的线程数和执行器。默认情况下它使用一个 fork join 执行器,所以你可以给它以下设置:
pool-dispatcher {
fork-join-executor { # force it to allocate exactly 5 threads
parallelism-min = 5
parallelism-max = 5
}
# executor = "thread-pool-executor" // can even change the executor here
#thread-pool-executor {
# core-pool-size-min = 1
# core-pool-size-factor = 2.0
# core-pool-size-max = 5
#}
}
如果您希望它正好使用 5 个线程。您可以参考 dispatcher docs 了解如何配置调度程序以及执行程序是什么。
PS:一般来说,Akka 问题通常在 akka-user mailing list 上得到最好的解决,团队在那里监控并帮助处理所有线程,但是也有一个活跃的 SO 社区,所以 "it depends" :-)