假设我需要从一个演员客户端调用Akka actor中的三个方法:
class MyActor extends Actor {
def receive = {
case req1: Request1 => sender ! method1()
case req2: Request2 => sender ! method2()
case req3: Request3 => sender ! method3()
}
}
我需要以不同的组合调用这些方法,例如:
方法1,方法2
方法3
方法1,方法2,方法3
我可以在客户端中使用以下方法来调用method1
:
def invokeMethod1 () {
val system = ActorSystem("system")
implicit val timeout = Timeout(120 seconds)
val actor = system.actorOf(Props[MyActor], name = "myactor")
val future = actor ? Request1
val result = Await.result(future, timeout.duration)
}
在不同组合中调用方法的最佳策略是什么?我应该有invokeMethod1
,invokeMethod2
和invokeMethod3
(注意每个人都初始化了演员系统)?或者我应该在演员本身中合并方法,例如method1and2
?还有其他首选方式吗?
答案 0 :(得分:-1)
我建议用于for循环,
def invokeMetod1:Future[Int] = ???
def invokeMetod2:Future[Int] = ???
def invokeMetod3:Future[Int] = ???
val a =
for{
_1 <- invokeMetod1
_3 <- invokeMetod3
_2 <- invokeMetod2
}yield
_1 + _2 + _3
它可以顺序执行(invokeMetod1然后invokeMetod3然后invokeMetod2)