7
나는 Akka 2.10을 JAVA와 함께 사용하고 있습니다.배우 이름이 고유하지 않습니다. - AKKA
내가 나를 위해 배우 참조를 취하는 방법이 - 또는 전 그런게있을 경우 하나를 만들 -하지만 약간의 시간이 나는 다음과 같은 예외가 나타납니다 하나 만들려고 할 때 : 물론
akka.actor.InvalidActorNameException: actor name [<ActorName>] is not unique!
at akka.actor.dungeon.ChildrenContainer$NormalChildrenContainer.reserve(ChildrenContainer.scala:130)
at akka.actor.dungeon.Children$class.reserveChild(Children.scala:77)
at akka.actor.ActorCell.reserveChild(ActorCell.scala:369)
at akka.actor.dungeon.Children$class.makeChild(Children.scala:202)
at akka.actor.dungeon.Children$class.attachChild(Children.scala:42)
at akka.actor.ActorCell.attachChild(ActorCell.scala:369)
at akka.actor.ActorSystemImpl.actorOf(ActorSystem.scala:552)
을, 나는 예외가 매우 분명하다는 것을 알고있다. 나는 동일한 식별자를 가진 액터를 두 개 이상 만들려고 노력하고 있지만 액터의 참조를 찾을 수 없을 때 이것을 수행한다. 시간 :
private static ActorRef getActor(String id,Class actor) throws Exception{
ActorSelection sel = system.actorSelection(system.child(id));
Timeout t = new Timeout(4, TimeUnit.SECONDS);
AskableActorSelection asker = new AskableActorSelection(sel);
scala.concurrent.Future<Object> fut = asker.ask(new Identify(1), t);
ActorRef actorClient = null;
try{
//Try to get an Actor reference
ActorIdentity ident = (ActorIdentity)Await.result(fut, t.duration());
actorClient = ident.getRef();
} catch(Exception e){
System.out.println("Error:"+id);
} finally{
//IF I dont found create a new One
if(actorClient==null){
actorClient = system.actorOf(Props.create(actor),id);
//THROWS ME AN EXCEPTION
}
}
return actorClient;
}
응답없이 4 초를 기다렸습니다 ... 그래서 새 것을 만듭니다.
나는 내 경우에 대한 해결책을 통해 인터넷을 검색하지만 성공하지 ... 는은 누구도 날이 문제를 해결하는 데 도움이 수 있습니까?
고맙습니다.
왜'Global.onStart'에서 액터를 만들지 않습니까? 이 방법으로 필요할 때 사용할 수 있다고 확신 할 수 있습니다. – Salem
어쨌든 왜 그런 식으로 정확하게 만들고 싶습니까? 유스 케이스 란 무엇입니까? 그것은 나에게 약간 어색해 보인다. – ale64bit
@kaktusito, 이제 저는이 전화를하는 배우를 만들었습니다. 그래서 타임 아웃을 늘렸고 지금은 문제가 없습니다 ... –