Versions Compared

Key

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

...

Code Block
languagec#
themeEmacs
linenumberstrue
public class DemoActor : ReceiveActor
{
    private readonly int _magicNumber;

    public DemoActor(int magicNumber)
    {
        _magicNumber = magicNumber;
        Receive<int>(x =>
        {
            Sender.Tell(x + _magicNumber);
        });
    }

    public static Props Props(int magicNumber)
    {
        return Akka.Actor.Props.Create(() => new DemoActor(magicNumber));
    }
}

system.ActorOf(DemoActor.Props(42), "demo");

 액터  자신의 액터 생성방식을 자신의 클래스에서 정의 하는것은 클래스내에서 정의하고 외부에 제공해주는것은 휼륭한 아이디어 입니다.

Actor.Props.Create() 는 액터만 생성하는것을 지원하며, 자신이 설계하는 static함수에서 생성하고 반환하여

액터추가 ( system.ActorOf ) 가 가능해 집니다.

  • Akka.Actor.Props.Create(() => new DemoActor(42))
  • DemoActor.Props(42)

위 두 코드는, 샘플코드 내에서 같은 의미이지만... 생성코드를 줄이고 생성방법을 획일화 할수가 있습니다.



Info

Props

Actor생성을 위해 옵션을 지정하고, 이를 통해 액터 생성방법을 공유하기위한 구성클래스입니다.

몇가지 Props를 통한 다양한 액터 생성법


Props props1 = Props.Create(typeof(MyActor));
Props props2 = Props.Create(() => new MyActorWithArgs("arg"));
Props props3 = Props.Create<MyActor>();
Props props4 = Props.Create(typeof(MyActorWithArgs), "arg");

...