2013-07-04 147 views
2

我正在学习如何使用Akka演员,并且我在Akka文档here的Fault Tolerance上找到了此示例。测试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中做到这一点。

谢谢。

回答

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") 
    } 
    }  
} 

另外我建议你到lookup the akka scala documentation