Programing/Akka

Akka Actor Hierarchy

BUST 2018. 10. 22. 21:45

Akka Actor Hierarchy

box diagram of the architecture
  • 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