Page History
...
트리구조이지만, FullName을 알고있을시 최하위 자식노드에게 직접 리모트 메시지전송이 가능하며 ( 접근의 유연성) , 부모를 통해 대리 접근도 가능하다.( 접근의 유연성)
또한 클러스터 룰정의를 통해 분산환경 구현의 확장이 유연합니다. 코드의 큰수정없이 접근에대한 클러스터 처리도도 가능합니다. ( 확장의 유연성 , ex>기존 단일처리구조에서 라운드 로빈으로 큰 코드수정없이 변경가능 )
장애 처리 관점에서 자식의 예외는 부모가 처리하는것을 1원칙으로, 부모의 예외를 자식노드에게 전가시키 지 않습니다.
...
접근이 가능하다란 말은 대상에게 메시지를 전송시킬수 있다란 의미이지, 객체 자체를 접근할수 있다란 의미는 아닙니다.( 객체 공유는 액터모델에 위배됨 )
Actor의 기본 생성과 Child Actor 생성
Code Block | ||||
---|---|---|---|---|
| ||||
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] |
...