我一直在研究 Akka Actor 模型。我有一个用例,其中将有 1000 多个演员处于活动状态,我必须处理这些演员。我想过通过application.conf中定义的配置来控制线程数。
但不是。在我的应用程序中创建的调度程序线程使我无法调整调度程序配置。每次重新启动我的应用程序时,我都会看到创建了不同数量的调度程序线程(我每次启动应用程序后都通过线程转储检查了这一点)。
甚至线程数也不等于我在 parallelism-min 中定义的线程数。由于线程数很少,我的应用程序处理速度非常慢。在检查没有。通过以下代码在我的机器中获取核心:
Runtime.getRuntime().availableProcessors();
它显示 40。但没有。即使我将并行度配置为 500,创建的调度程序线程数也少于 300。
以下是我的 application.conf 文件:
consumer-dispatcher {
type = "Dispatcher"
executor = "fork-join-executor"
fork-join-executor {
parallelism-min = 500
parallelism-factor = 20.0
parallelism-max = 1000
}
shutdown-timeout = 1s
throughput = 1
}
我可以知道 akka 将在什么基础上在内部创建调度程序线程以及如何增加调度程序线程数以增加参与者的并行处理?