이미 만든 하나의 액터를 선택하려고합니다. 여기 코드 : actorSelection을 사용하여 akka 배우를 선택하는 방법은 무엇입니까?
myActor path - akka.tcp://[email protected]:46635/user/myActorName#1444872428
Selection from spec akka://unit-test/user/myActorName None
Selection from spec /user/myActorName/ None
는 또한 I 배우에게 메시지를 전달할 수 있고 잘 완료 :
val myActor = system.actorOf(Props(classOf[MyActor]), "myActorName")
println("myActor path - " + akka.serialization.Serialization.serializedActorPath(myActor))
println("Selection from spec akka://unit-test/user/myActorName " + system.actorSelection("akka://unit-test/user/myActorName").resolveOne().value)
println("Selection from spec /user/myActorName/ " + system.actorSelection("/user/myActorName/").resolveOne().value)
결과이다. actorSelection 동안 내가 놓친 것은 무엇입니까? 액터를 올바르게 선택하는 방법은 무엇입니까?
는
그것은 매우 이상하다 업데이트,하지만 교체 할 때 system.actorSelection("/user/myActorName/").resolveOne().value
와 system.actorFor("/user/myActorName/")
모든 작동합니다. actorFor
은 액터를 반환합니다. (actorFor
으로 인한 올바른 해결책이 아닙니다.)
매우 놀랍습니다. 나는 resolveOne에서'implicit timeout'을 사용하여 결과를 기다리고 제공한다고 생각했습니다. – Cherry
아니요 :). Scaladoc : "해당 액터가 없거나 제공된 타임 아웃 내에 식별이 완료되지 않은 경우 ActorNotFound 오류로 완료됩니다" – dk14
반환 된 미래를 완료하거나 실패하는 데 시간 초과가 사용되었지만 여전히이 고전적인 방식으로 처리해야합니다 – dk14