我有以下演员:
val actor1 = context.actorOf(SorterActor.build
.withDispatcher("akka.actor.custom-dispatcher"), name = "actor_child1")
val actor2 = context.actorOf(SorterActor.build
.withDispatcher("akka.actor.custom-dispatcher"), name = "actor_child2")
和执行上下文
implicit val ec: ExecutionContext = context.system.dispatchers.lookup("akka.actor.custom-dispatcher")
我不明白的是说哪个调度程序与actor上的withDispatcher
fn一起使用,并指定指向同一个调度程序的执行上下文之间有什么区别。如果执行上下文指向与使用withDispatcher
函数定义的调度程序不同的调度程序,会发生什么?
谢谢。
答案 0 :(得分:2)
在创建actor时指定调度程序时,这些调度程序将由这些调度程序本身使用(用于消息处理)。
当您使用执行上下文定义implicit val
时,它确定Future
- s在其定义范围内将使用哪个执行上下文(当然,您可以明确地将它用于执行{{1 }} - S)
如果隐式执行上下文指向的是不同于使用Runnable
函数定义的调度程序的调度程序,那么您的withDispatcher
- s将在该不同的调度程序上运行(而不是在actor的调度程序上)。通常它可用于更细粒度的批量处理。