【问题标题】:Actor name is not unique - AKKA演员姓名不唯一 - AKKA
【发布时间】:2015-03-27 16:31:42
【问题描述】:

我正在使用带有 JAVA 的 Akka 2.10。

我有一个为我获取 Actor 引用的方法 - 或者如果之前没有,则创建一个 - 但有时当我尝试创建一个时,我会收到以下异常:

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 中创建演员?这样您就可以确保它在您需要时可用
  • 无论如何,为什么要精确地创建它?用例是什么?我觉得有点尴尬。
  • @kaktusito,现在我已经创建了一个只进行此调用的演员,所以,我增加了超时,现在我没有任何问题......

标签: java playframework akka actor


【解决方案1】:

根据documentation,即使演员已经死亡,您也不应该重复使用演员路径。我的猜测是您之前创建了一个具有该名称的演员,它死了,现在无法通过演员选择机制找到。在尝试创建具有该名称的新演员时,您会遇到此异常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-09
    • 2019-01-16
    • 2015-03-25
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多