Versions Compared

Key

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

  UntypedActor는, 이전 섹션에서 익힌 ReceiveActor 처럼 생성자에서 Type매칭에의해 메시지 처리기를 등록하는게 아닌 ,

기본 처리 메스드를 재정의하여 기본 메시지 처리외에 커스텀한 기능을 부여할수 있습니다부여할시 사용됩니다.

이번장에서는 Actor의 기능을 확장하여 유용한 몇가지 기능들을 살펴보겠습니다.

...



OnReceive - 기본 메시지 처리 재정의

Code Block
languagec#
themeEmacs
titleUntyped Actor
linenumberstrue
    public class MyActorSame : UntypedActor
    {        
        protected override void OnReceive(object message)
        {
            if(message is string)
            {
                if (message as string == "createChild")
                {
                    Context.ActorOf<MyActor>("myChild");
                    Sender.Tell("Create Child Succed:myChild");
                }
                else
                {
                    Sender.Tell("RE:" + message);
                }
            }
            else if(message is SomeMessage)
            {
                Sender.Tell("RE:" + (message as SomeMessage).message );
            }
        }
    }

...

메시지수신부 OnReceive 를 직접 Override해서 사용하는것 외에는 차이가 없습니다없으며

아래에 설명된 확장 기능들은 모두 ReceveActor에서도 사용가능합니다.


Become/Unbecome

...

  사용목적 : 메시지 처리기가 어떠한 상태에따라 다른 메시지 처리기가 필요하다고 가정합시다.

...

다른액터로 받은 메시지를 전달할때 사용합니다.  이것은 라우터,로드밸런스,복제 등에서 유용하게 쓰입니다.

액터종료방법

...


PoisonPill

No Format


myActor.Tell(PoisonPill.Instance, Sender);

메시지를 통해 액터를 멈추고자 할때 이용됩니다. 일반적이고 안정적입니다.


Killing




안전한 액터 종료(Graceful Stop)

...

 관리자 액터가 , 어떠한 액터를 감시하고있고, 모두 안전하게 종료후 자기자신도 마지막에

...