2013-07-04 3 views
2

Akka 액터 사용법을 배우고 있으며이 예제는 Akka 설명서 here의 결함 내결함성에서 발견했습니다.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 
    } 
} 

부모 클래스와 하위 클래스를 제어하기위한 테스트 클래스를 만들려고합니다. 이 클래스에는 초기화 부분을 수행하는 메소드와 자식 인스턴스에 메시지를 전송하는 다른 메소드가 있어야합니다.

수업 구성에 도움이 필요합니다. 자바에서는 ActorSystem, Parent, Child를 인스턴스 변수로 선언하고 메서드 내에서 사용합니다. 그러나 스칼라에서이 작업을 수행하는 방법을 모르겠습니다.

감사합니다.

답변

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으로 좋습니다.