akka中调度程序和执行上下文之间的区别

时间:2014-09-29 00:15:19

标签: akka

我有以下演员:

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函数定义的调度程序不同的调度程序,会发生什么?

谢谢。

1 个答案:

答案 0 :(得分:2)

在创建actor时指定调度程序时,这些调度程序将由这些调度程序本身使用(用于消息处理)。

当您使用执行上下文定义implicit val时,它确定Future - s在其定义范围内将使用哪个执行上下文(当然,您可以明确地将它用于执行{{1 }} - S)

如果隐式执行上下文指向的是不同于使用Runnable函数定义的调度程序的调度程序,那么您的withDispatcher - s将在该不同的调度程序上运行(而不是在actor的调度程序上)。通常它可用于更细粒度的批量处理。