我有一堆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并加入结果,这是同步方法无法实现的。考虑到我不需要并行处理:使用专用调度员并避免创建期货更有效吗?
答案 0 :(得分:1)
如果您最终需要比默认调度程序最大池大小更多的并发getSynchronously()
操作,那么专门的调度程序将按顺序排列。
但是对于你的问题,我同意@ rob-starling,两者都很好&有它们的用途。