Scala 在Akka中调用粒度方法
假设Akka actor中有三个方法需要从actor客户端调用:Scala 在Akka中调用粒度方法,scala,akka,Scala,Akka,假设Akka actor中有三个方法需要从actor客户端调用: class MyActor extends Actor { def receive = { case req1: Request1 => sender ! method1() case req2: Request2 => sender ! method2() case req3: Request3 => sender ! method3() } } 我需要以不同的组合调用这些方法
class MyActor extends Actor {
def receive = {
case req1: Request1 => sender ! method1()
case req2: Request2 => sender ! method2()
case req3: Request3 => sender ! method3()
}
}
我需要以不同的组合调用这些方法,例如:
方法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
(请注意,每一个都会初始化actor系统)?或者我应该在actor本身中组合方法,例如method1和2
?还有其他更喜欢的方式吗 我建议使用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
def invokeMetod1:Future[Int]=???
def invokeMetod2:Future[Int]=???
def invokeMetod3:Future[Int]=???
瓦拉=
为了{
_1