2013-07-04 144 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