Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

트리구조이지만, FullName을 알고있을시 최하위 자식노드에게 직접 리모트 메시지전송이 가능하며 ( 접근의 유연성) , 부모를 통해 대리 접근도 가능하다.( 접근의 유연성)

또한 클러스터 룰정의를 통해 분산환경 구현의 확장이 유연합니다. 코드의 큰수정없이 접근에대한 클러스터 처리도도 가능합니다.  ( 확장의 유연성 , ex>기존 단일처리구조에서 라운드 로빈으로 큰 코드수정없이 변경가능 )

장애 처리 관점에서 자식의 예외는 부모가 처리하는것을 1원칙으로, 부모의 예외를 자식노드에게 전가시키 지 않습니다.

...

접근이 가능하다란 말은 대상에게 메시지를 전송시킬수 있다란 의미이지, 객체 자체를 접근할수 있다란 의미는 아닙니다.( 객체 공유는 액터모델에 위배됨 )


Actor의 기본 생성과 Child Actor 생성

Code Block
languagescala
title기본 액터생성
class PrintMyActorRefActor extends Actor {
  override def receive: Receive = {
    case "printit" =>
      val secondRef = context.actorOf(Props.empty, "second-actor") //자식의 생성은 부모만 할수 있다.
      println(s"Second: $secondRef")
  }
}

val firstRef = system.actorOf(Props[PrintMyActorRefActor], "first-actor")  // actorOf 는 Actor생성시 사용됩니다.
println(s"First : $firstRef")
firstRef ! "printit"   // !는 스칼라에서 Input을 위한 키워드이며, C#또는 JAVA에서는 firstRef.Tell("printit") 이렇게 사용하면 됩니다.


//액터 생성 순서   first-actor <= second-actor  가 parent <= child 관계가 된다.
First : Actor[akka://testSystem/user/first-actor#1053618476]
Second: Actor[akka://testSystem/user/first-actor/second-actor#-1544706041]

...