2

我正在学习如何使用 Akka 演员,我在此处的 Akka 文档中找到了有关容错的示例。

class Parent extends Actor with ActorLogging {
    override val supervisorStrategy =
            OneForOneStrategy(maxNrOfRetries = 10, withinTimeRange = 1 minute) {
            case _: ArithmeticException ⇒ Resume
            case _: NullPointerException ⇒ Restart
            case _: IllegalArgumentException ⇒ Stop
            case _: Exception ⇒ Escalate
    }
    def receive = {
        case p: Props ⇒ sender ! context.actorOf(p)
    }
}

class Child extends Actor {
    var state = 0
    def receive = {
        case ex: Exception ⇒ throw ex
        case x: Int ⇒ state = x
        case "get" ⇒ sender ! state
    }
}

我正在尝试创建一个测试类来控制父类和子类。这个类应该有一个方法来做初始化部分和另一个方法来向子实例发送消息。

我需要帮助来组织课堂。在 Java 中,我将 ActorSystem、Parent 和 Child 声明为实例变量并在方法中使用它们。但我不确定如何在 Scala 中做到这一点。

谢谢。

4

1 回答 1

1

不是最好的方法。但我认为它应该工作。

object Application {
   def main(args : Array[String]) {
     val system = ActorSystem("mySystem")
     val parent = system.actorOf(Props[Parent], "parent")
     (parent ? Props[Child]).mapTo[ActorRef].foreach { child =>
        child ! new IllegalArgumentException("Oh my")
     }
   }       
}

我还建议您查找 akka scala 文档

于 2013-07-04T16:38:14.863 回答