참조
https://getakka.net/articles/actors/receive-actor-api.html
- Akka.NET에서 액터를 생성하면 항상 특정 부모에 속합니다.
- 이것은 액터가 항상 트리로 구성된다는 것을 의미합니다.
- 일반적으로 액터 생성은 다른 액터 내부에서만 발생할 수 있습니다.
- 이 '생성자' 액터는 새로 생성된 자식 액터의 부모가 됩니다.
- 그러면 처음으로 만든 액터의 부모가 누구냐고 물을 수 있습니다.
- 최상위 액터를 생성하려면 먼저 액터 시스템을 초기화해야 합니다.
- 이것을 객체 시스템이라고 합시다.
- 그 다음에는 새로 생성된 액터에 대한 참조를 반환하는 System.ActorOf() 호출이 이어집니다.
Message 클래스 생성
- 액터에게 무언가를 하라고 지시하는 방법은 메시지를 보내는 것입니다.
GreetMessage
은 보낼 메시지 유형입니다.
GreetMessage.cs
namespace Sample_TEST
{
public class GreetMessage
{
public string who { get; set; }
public GreetMessage(string who)
{
this.who = who;
}
}
}
Actor 생성
- 액터 내부에서 Receive() 메서드를 사용하려면 액터가 ReceiveActor에서 상속받아야 합니다.
- 생성자 내에서 처리하려는 모든 유형의 메시지에 대해 Receive(Action 처리기)에 대한 호출을 추가합니다.
- PreStart는 액터가 시작될 때 Akka 프레임워크에 의해 호출됩니다.
- PostStop은 액터가 중지된 후에 호출됩니다.
using Akka.Actor;
using System;
namespace Sample_TEST
{
public class GreetingActor : ReceiveActor
{
public GreetingActor()
{
Receive<GreetMessage>(x => Console.WriteLine($"{x.who}", ConsoleColor.Green));
}
// Actor 시작 시 실행
protected override void PreStart() => Console.WriteLine("Pre Start.", ConsoleColor.Green);
// Actor 중지 시 실행
protected override void PostStop() => Console.WriteLine("Post stop.", ConsoleColor.Red);
}
}
Main
using System.Threading;
using Akka.Actor;
namespace Sample_TEST
{
class Program
{
static void Main(string[] args)
{
// Create ActorSystem
var system = ActorSystem.Create("ActorSys");
// Create Actor
var greetActor = system.ActorOf<GreetingActor>("greetingActor");
// Send Message to Actor
greetActor.Tell(new GreetMessage("World"));
Thread.Sleep(1000);
// Stop Actor
system.Stop(greetActor);
Console.ReadKey();
}
}
}
'프로그래밍 > Akka.Net' 카테고리의 다른 글
[Akka.NET] Stash (0) | 2023.05.30 |
---|---|
[Akka.NET] Receive()와 ReceiveAny() (0) | 2023.05.30 |
[Akka.NET] Akka.NET Blog Archieve (0) | 2023.05.30 |
[Akka.Net] MailBox (0) | 2022.06.09 |
[Akka.Net] Props 이용한 Actor 생성 (0) | 2022.06.06 |