2011-12-16 2 views
1

This earlier question 감독자 액터에서 'stop'을 호출하면 연결된 액터가 모두 종료됩니다. 그러나 공장을 통하지 않고 '사용자 지정'액터를 만드는 경우이 자동 종료가 발생하지 않는 것으로 보입니다. 예를 들어, another question에 대한 답변에서이 코드를 참조하십시오연결된 모든 액터를 종료하는 사용자 정의 Akka 감독자 생성

'정지'는 모듈 앞에 배우에서 호출 된 경우
class Module1 extends Actor { 
    self.faultHandler = OneForOneStrategy(List(classOf[Throwable]), 5, 5000) 

    def receive = { 
     case Register(actor) => 
      self.link(actor) 
    } 
} 

, 여기에 링크 된 배우가 종료되지 것입니다. 사용자 정의 액터가 연결된 액터를 자동으로 종료하도록하는 방법이 있습니까? 아니면 사용자 정의 액터를 만들고 싶다면 직접 작성해야하는 것입니까?

감사합니다.

답변

2

"self.linkedActors.values.iterator"를 호출 한 다음 PoisonPill을 보내거나 stop() 할 수 있습니다.

+0

은 기분이 우울합니다. postStop()은이 코드를 넣기에 완벽한 장소입니다 .-) –

+0

Akka 소스 코드의 SupervisorActor 클래스에서 이와 비슷한 코드를 보았습니다. 따라서 SupervisorActor의 코드를 복사하여 내 자신의 맞춤 관리자 클래스에 붙여 넣을 수 있습니다. 복사 및 붙여 넣기 코딩보다 더 좋은 방법이 있는지 궁금합니다. 다른 사용자 지정 관리자에게 복사하여 붙여 넣기해야하는 다른 동작이 있습니까? 추락 한 아동 액터를 재시작하는 기능을 좋아합니까? – bnsmith

+0

아니, 그게 틀림 없어. 하지만 2.0-M1에서 수동으로 수행 할 필요는 없습니다. –

관련 문제