제가 배우와 자주 겪는 문제를 추상화하고 공통적 인 디자인 패턴을 통해이를 해결할 수있게하십시오. 다음과 같은 액터 계층 구조가 있다고 가정 해 보겠습니다.Akka 형제 재귀 ActorRef 요구 사항
── user
└── ServiceActor
├── TicketManager
│ ├── WorkerA
│ ├── WorkerB
│ └── WorkerC
└── UserManager
├── WorkerA
├── WorkerB
└── WorkerC
티켓 및 사용자 관리자는 중요하지 않습니다. TicketManager가 UserManager에 메시지를 보내고 그 반대의 경우도 마찬가지입니다. (이것들은 내가 사용 해본 예제 이름 일 뿐이며 실제 문제를 대표하지는 않습니다.)
다음 중 가장 적합한 것은 어느 것입니까?
옵션 1 :
TicketManager 생성자는 생성자 인수로 UserManager 걸립니다. UserManager 생성자는 TicketManager를 생성자 인수로 사용합니다. 그러나 둘 다 서로에 대해 재귀 호출을 할 수 없으므로 어쨌든 가능하지 않습니다.
옵션 2 :
이UserManager이 actorSelection ("../ TicketManager")와 같은 actorSelection를 통해 TicketManager에 대한 참조를 만드는 등의 요구 사항에, 또는 한 번만 시작에 그것을 유지합니다.
옵션 3 : 특정 시점에서
는 UserManager/TicketManager는 다른 형제 자매에 대한 참조를 위해 부모 (ServiceActor를) 요청하고 부모가 참조하는 보유하고 적절하게 actorRef로 다시 대답한다.
옵션 4 :
이 상황을 결코 하는가? 형제가 어떤 방식 으로든 디자인을 "복잡하게"함에 따라 서로 이야기하는 것을 생각하지 않아야합니까? 나무 같은 계층 구조가 더 있어야합니까? 그러한 경우에 피할 수있는 일반적인 디자인 패턴은 무엇입니까?
요구 사항을 분명히했으면 좋겠어. 필요하면 추가로 명확히 할 수있게 해주시겠습니까?
즉, 초기화 전술이 Edmondo에 의해 제안 통찰력 동안 것, 내가 옵션 4 옵션의 혼합물을하고 결국 3. 나의 배우 계층 구조의 엉망진창을 풀기위한 옵션 4. 그 외에도 형제 자매가 서로 이야기 할 필요가있는 시점에서 부모님을 통해 이야기했습니다. 나는 이것이 합리적인 패턴이라고 생각한다. – Ra41P