我在the official site上阅读了有关调度员的文档。但它还不清楚调度员是什么样的野兽。例如,它可以配置如下:
my-thread-pool-dispatcher {
# Dispatcher is the name of the event-based dispatcher
type = Dispatcher
# What kind of ExecutionService to use
executor = "thread-pool-executor"
# Configuration for the thread pool
thread-pool-executor {
# minimum number of threads to cap factor-based core number to
core-pool-size-min = 2
# No of core threads ... ceil(available processors * factor)
core-pool-size-factor = 2.0
# maximum number of threads to cap factor-based number to
core-pool-size-max = 10
}
# Throughput defines the maximum number of messages to be
# processed per actor before the thread jumps to the next actor.
# Set to 1 for as fair as possible.
throughput = 100
}
问题:
这是否意味着每个actor系统的 唯一一个 实例所配置的调度程序?
调度程序的一个实例是否可以管理 多个 执行程序(线程池,fork-join池)?
如果每个已配置的调度程序只有一个实例,那么不同的角色(可能在不同的节点上)如何与之交互?
答案 0 :(得分:3)
最简单的方法是将调度程序视为用于运行actor的线程池(它确实是)。根据您的actor的性质,您可以在fork-join线程池(最常见)或CachedThreadPool上运行它们(如果您是dong IO)等。我强烈推荐this文章非常好地解释线程池。
回答具体问题:
您可以使用上面的配置创建多个相同类型的Dispatchers。