Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

 구조적인 설계로, 부모의 액터를 정지시키면 자식의 액터를 모두 종류후 마지막에 부모 액터가 종료가됩니다.

이것은 부모가 자식을 책임지는 AKKA의 기본 예외 처리모델과도 부합하며, OOP방식의 소멸순서와도 유사합니다.

상속을 받은 OOP Class의 소멸 순서와도 유사합니다. 

부모가 자식을 관리감독할수 있으며, 장애복구전략에 따라 자식액터를 재생성 할수 있습니다.다만 부모에게 발생한 예외를 자식에게 전가시키지 않습니다. ( 예외처리모델에 더 상세하게 설명)



Code Block
languagec#
themeEmacs
titleActor 중지
linenumberstrue
    public class StartStopActor1 : ReceiveActor
    {
        private ILoggingAdapter log = Context.GetLogger();

        public StartStopActor1()
        {
            Receive<string>(message => {
                if (message == "stop")
                {
                    Context.Stop(Self);
                }                
            });            
        }

        protected override void PreStart()
        {
            log.Info("first started");
            Context.ActorOf<StartStopActor2>("second");
        }

        protected override void PostStop()
        {
            log.Info("first stopped");
        }

    }

    public class StartStopActor2 : ReceiveActor
    {
        private ILoggingAdapter log = Context.GetLogger();

        public StartStopActor2()
        {
            Receive<string>(message => {                
            });            
        }

        protected override void PreStart()
        {
            log.Info("second started");

        }

        protected override void PostStop()
        {
            log.Info("second stopped");
        }

    }


	IActorRef myActor = actorSystem.ActorOf<StartStopActor1 >("myactor");
	myActor.Tell("stop");

//OutPut
//first started
//second started
//second stopped
//first stopped

...