Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 在Akka中调用粒度方法_Scala_Akka - Fatal编程技术网

Scala 在Akka中调用粒度方法

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() } } 我需要以不同的组合调用这些方法

假设Akka actor中有三个方法需要从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

方法一、方法二、方法三

我可以在客户端中使用以下方法来调用
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