2013-08-30 2 views
0

저는 배우가 잘 알려진 액터 (고정 된 이름)에게 직접 메시지를 보내는 액터 계층 구조를 구축하고 있습니다. 나는. 이러한 액터 (계층에서 멀리 제거됨)는 context.actorFor("akka://...")을 통해 actorRef를 얻습니다.액터 주소 및 테스트

e.e. 예를 들어, I는 "매기고"배우가 :

system.actorOf (소품 [OrchestratingActor] NAME = "조정자") 다음 종류 akka://application/user/orchestrator

과 곳의 주소를 가질 것이다

나는 그 배우를 테스트하고자하고 그 주소를 처리하는 방법에 대해 궁금 지금

class RandomWorker extends Actor { 
    def theOrchestrator = context.actorFor("akka://application/user/orchestrator") 
    def receive = { 
    case Foo => 
     theOrchestrator ! "Bar" 
    } 
} 

: 다른 메시지를받은 임의의 근로자는 지휘자에게 얘기하고 싶어를 단위 테스트 할 때 배우 (예 : TestAc 사용 torRef), 원격 주소로 보내지는 것을 확인하려면 어떻게해야합니까? 하나의 아이디어는 (가능한 경우) 생성자를 통해 잘 알려진 액터에게 주소를 제공하고 TestActor의 주소를 전달하여 수신중인 것을 확인하는 것입니다. 그러나 테스트에서 주어진 주소를 "가장 할"방법이 없는지 궁금합니다. 주소가 단순하지 않은 상황. 즉

나는 배우의 동작을 (테스트하고 싶습니다

는 그것은 참으로 수신시 지휘자로 "Bar"을 보낸 것 Foo

+0

미안하지만 질문을 전혀 이해하지 못합니다. 당신이 갖고있는 것과 원하는 것을 열거 할 수 있습니까? – Jatin

+0

사실, 이것은 약간 푹신했는데, 지금은 더 명확 해지기를 바랍니다. –

답변

2

내 추천은 l 당신이 보여준 목적을위한 배우들의 찬양. 응용 프로그램을 모두 정리할 때 응용 프로그램의 설치 단계를위한 도구입니다. 그러나 대부분의 배우 감독자는 룩업을 사용하지 않고 자녀의 의존성을 알게됩니다.

로컬 액터 시스템 내에서 모든 ActorRefs는 생성자 인수 또는 소개 메시지를 사용하여 위에서 아래로 주입 될 수 있습니다. 룩업은 서로 원격 시스템을 도입 할 때 가장 유용합니다.

1

생성자를 통해 주소를 주입 아무 문제가 없다. 그것을 보자 당신이 기본적으로 당신 자신의 질문에 대답했기 때문에, 나는 당신이 어떤 Akka 버전을 사용하고 있는지 알지 못하기 때문에, 당신이 어떤 세부 사항이 필요한지 압니다. 왜냐하면 당신이 사용하고있는 Akka 버전이 아니라, actorFor 최근에 ActorSelection에 대한 찬성으로 비추천되었으며, 이에 대한 좋은 이유가 있습니다.