Mailbox
- Akka.NET에서 Mailbox는 액터를 대상으로 하는 메시지를 보관합니다.
- 액터에게 메시지를 보낼 때 메시지는 액터에게 직접 전달되지 않고, 해당 액터의 Mailbox로 우선 이동 후 액터가 처리할 시간이 있을 때 메시지를 처리합니다.
- Mailbox는 메시지 큐로 설명이 가능합니다.
- Mailbox에 들어온 메시지는 보통 액터에서 순서대로 처리합니다.
Priority Mailbox
- 하지만 처리 순서를 변경할 수 있는 Priority Mailbox가 있습니다.
- 일반적으로 모든 액터는 Mailbox가 있지만, 필수 사항은 아닙니다.
- 라우터(Router)에 속한 라우티(Routees)들은 하나의 Mailbox를 공유합니다.
Mailbox 사용하기
- 액터가 특정 사서함을 사용하도록 하려면 다음 위치 중 하나를 설정하면 됩니다.
Actor props에서 설정
Props.Create<ActorType>().WithMailbox("my-custom-mailbox");
Actor 구성에서 설정
- 대개 Hocon에서 설정
akka.actor.deployment { /my-actor-path { mailbox = my-custom-mailbox } }
UnboundedMailbox
- Akka.NET에서 사용하는 기본 사서함입니다.
UnboundedPriorityMailbox
- 액터는 Mailbox에 들어가는 메시지의 우선순위를 설정할 수 있습니다.
- PriorityGenerator 메서드에서 반환된 값은 사서함의 메시지 순서를 지정하는 데 사용됩니다.
- 메시지에 포함된 Priority가 낮은 값이 먼저 처리됩니다.
- 동일한 순위의 메시지는 정의하지 않습니다.
public class IssueTrackerMailbox : UnboundedPriorityMailbox
{
protected override int PriorityGenerator(object message)
{
var issue = message as Issue;
if (issue != null)
{
if (issue.IsSecurityFlaw)
return 0;
if (issue.IsBug)
return 1;
}
return 2;
}
}
'프로그래밍 > 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] Props 이용한 Actor 생성 (0) | 2022.06.06 |
[Akka.Net] Actor 생성 (0) | 2022.06.06 |