[Akka.NET] 액터 메시지 보내기 - Tell

소개

오늘은 Akka.NET 을 설치한 후, 액터를 생성하여 액터에서 메시지를 보내는 방법에 대해서 알려드리겠습니다.

모든 Actor는 오직 메시지로만 소통을 합니다. 그만큼, 메시지는 아주 기본중에 기본입니다.

이번 포스팅에서는 서로 다른 액터 2개를 생성한 후, 서로에게 메시지를 보내고 받는 방법에 대해서 보여 드리겠습니다.


예제 코드

  • 액터를 생성하여, 메시지를 주고 어떤 메시지를 받았는지 출력하는 구문의 예제 코드를 작성해 보겠습니다.
  • 아래 예제는 2개의 Actor를 생성 한 후, Tell 메서드를 이용하여 메시지를 보내는 예제 입니다.
using Akka.Actor;
using System;

namespace interfaceTest
{
    class Program
    {
        // 액터 시스템 생성
        static ActorSystem system = ActorSystem.Create("actorSystem");

        static void Main(string[] args)
        {
            // 액터1 생성
            IActorRef actor1 = system.ActorOf(ExampleActor1.Props(), "exampleActor1");
            IActorRef actor2 = system.ActorOf(ExampleActor2.Props(), "exampleActor2");

            // 메시지 보내기
            actor1.Tell("나는 Acotr1 입니다.");
            actor2.Tell("나는 Acotr2 입니다.");

            //ActorSystem 종료 대기
            system.WhenTerminated.Wait();
        }
    }

    public class ExampleActor1 : ReceiveActor
    {
        public static Props Props()
        {
            return Akka.Actor.Props.Create(() => new ExampleActor1());
        }

        public ExampleActor1()
        {
            Receive<string>(_ => Handle(_));

            // 자기 자신에게 메시지 보내기
            Self.Tell("나는 내가 나한테 보내는 메시지 입니다.");
        }

        public void Handle(string message)
        {
            Console.WriteLine($"Actor1 Re : {message}");
        }
    }

    public class ExampleActor2 : ReceiveActor
    {
        public static Props Props()
        {
            return Akka.Actor.Props.Create(() => new ExampleActor2());
        }

        public ExampleActor2()
        {
            Receive<string>(_ => Handle(_));

            Self.Tell("나는 내가 나한테 보내는 메시지 입니다.");
        }

        public void Handle(string message)
        {
            Console.WriteLine($"Actor2 Re : {message}");
        }
    }
}

실행 결과

Actor2 Re : 나는 Acotr2 입니다.
Actor1 Re : 나는 Acotr1 입니다.
728x90

이 글을 공유하기

댓글

Designed by JB FACTORY