akka:专职调度员还是未来?

时间:2014-03-18 17:35:39

标签: scala akka dispatcher future

我有一堆Actors(Akka 2)需要同步与后台系统通信。

让Actors使用单独的专用调度程序并同步执行处理是否有问题

def receive = {
  case Foo(foo) => sender ! getFooSynchronously(foo)
  case Bar(bar) => sender ! getBarSynchronously(bar)
}

或者我应该使用如下的期货?

def receive = {
  case Foo(foo) => Future { getFooSynchronously(foo) } pipeTo sender
  case Bar(bar) => Future { getBarSynchronously(bar) } pipeTo sender
}

如果我没有弄错的话,使用Futures将允许并行询问Actor和Foo和Bar并加入结果,这是同步方法无法实现的。考虑到我不需要并行处理:使用专用调度员并避免创建期货更有效吗?

1 个答案:

答案 0 :(得分:1)

如果您最终需要比默认调度程序最大池大小更多的并发getSynchronously()操作,那么专门的调度程序将按顺序排列。

但是对于你的问题,我同意@ rob-starling,两者都很好&有它们的用途。