Akka Actor Hierarchy
- system.actorOf()로 만들어진 Actor user guardian에서 만들어 진다.
- getContext().actorOf()를 이용하여 자식(Child) Actor를 생성을 할수 있다.
- / - root guardian이라고 불린다. 시스템에 있는 모든 Actor의 부모 엑터이다.
- /user - 유저가 생성된 모든 엑터의 부모 엑터이다.
- /system - system guardian
Example - Print reference
- 부모/자식 관계의 actor를 알아보는 방법중에 제일 쉬운 방법은 ActorRef의 Reference를 출력하는 방법이다.
package com.lightbend.akka.sample;
import akka.actor.AbstractActor;
import akka.actor.AbstractActor.Receive;
import akka.actor.ActorRef;
import akka.actor.ActorSystem;
import akka.actor.Props;
class PrintMyActorRefActor extends AbstractActor {
@Override
public Receive createReceive() {
return receiveBuilder()
.matchEquals("printit", p -> {
ActorRef secondRef = getContext().actorOf(Props.empty(), "second-actor");
System.out.println("Second: " + secondRef);
})
.build();
}
}
public class ActorHierarchyExperiments {
public static void main(String[] args) throws java.io.IOException {
ActorSystem system = ActorSystem.create("testSystem");
ActorRef firstRef = system.actorOf(Props.create(PrintMyActorRefActor.class), "first-actor");
System.out.println("First: " + firstRef);
firstRef.tell("printit", ActorRef.noSender());
System.out.println(">>> Press ENTER to exit <<<");
try {
System.in.read();
} finally {
system.terminate();
}
}
}
Result
First: Actor[akka://testSystem/user/first-actor#1053618476]
Second: Actor[akka://testSystem/user/first-actor/second-actor#-1544706041]
- 2개의 엑터 모두 akka://tesetSystem/ 으로 시작한다. akka://는 protocol field
- remote actorsystem이면 URL에 hostname이 포함이 되어 있다.
- 2번째 엑터는 /first-actor/의 path를 가지고 있는다.
- #1053618476, #-1544706041는 유니크 값 (unique-identifier)이다. 대부분 경우에는 무시해도 상관없다.
'Programing > Akka' 카테고리의 다른 글
Akka Coordinated Shutdown (0) | 2018.12.11 |
---|---|
Akka Stream Materialized values (0) | 2018.11.24 |
Akka Actor Life Cycle (0) | 2018.10.21 |
Akka Pulling Pattern (0) | 2018.10.13 |
Akka with Spring (0) | 2018.09.29 |