阅读了Akka文档和一些在线帖子后,我仍然没有清楚理解路由器和调度程序之间的关系。
1)路由器是否总是使用调度程序来分派到被路由的对象?路由器可以在不使用调度程序的情况下完成工作吗?
2)如果配置中没有定义其他调度程序,我的理解是将使用默认调度程序。在我的actor系统中,我有一个包含两个生产者actor和三个消费者actor的集群,生产者和消费者都在不同的JVM上运行--对于一个actor系统拥有一个默认调度程序是什么意思?
我的理解是,调度程序就像线程池执行程序。在这种情况下,在不同的JVM中,每个JVM都会有自己的调度程序实例和线程池执行程序,对吗?
3)与上述问题相关(https://doc.akka.io/docs/akka/current/dispatchers.html#problem-blocking-on-default-dispatcher):
1)路由器是否总是使用调度程序来分派到被路由的对象?路由器可以在不使用调度程序的情况下完成工作吗?
2)如果配置中没有定义其他调度程序,我的理解是将使用默认调度程序。在我的actor系统中,我有一个包含两个生产者actor和三个消费者actor的集群,生产者和消费者都在不同的JVM上运行--对于一个actor系统拥有一个默认调度程序是什么意思?
我的理解是,调度程序就像线程池执行程序。在这种情况下,在不同的JVM中,每个JVM都会有自己的调度程序实例和线程池执行程序,对吗?
3)与上述问题相关(https://doc.akka.io/docs/akka/current/dispatchers.html#problem-blocking-on-default-dispatcher):
使用context.dispatcher作为阻塞Future执行的分发器可能会有问题,因为除非为Actor设置单独的分发器,否则默认情况下此分发器用于所有其他Actor处理。
如果Actor在不同的JVM中运行,上述内容是否仍适用?如果是,这意味着什么?