我有一个父级Actor和其子级。每个子级Actor都控制着一个设备,当我创建子级Actor时,为所有子级Actor分配一个uuid。
每个子级Actor都是通过设备配置创建的,当配置更改时,我想通过以下方式重新创建Actor:
停止旧Actor: final Future stopped = gracefulStop(actorRef, Duration.create(1, TimeUnit.SECONDS)); Await.result(stopped, Duration.create(1, TimeUnit.SECONDS));
重新创建新Actor: context.actorOf(Props.create( GateActor.class, () -> new GateActor(hardwareRouterActorRef, settings)), settings.getUuid())
但它抛出异常: akka.actor.InvalidActorNameException: actor name [6237255c-851b-47d2-ac31-03c7635e6537] is not unique!
我认为gracefulStop代码没有删除子级Actor,我的问题是:如何删除子级Actor?
我还尝试使用PoisonPill删除Actor:
每个子级Actor都是通过设备配置创建的,当配置更改时,我想通过以下方式重新创建Actor:
停止旧Actor: final Future stopped = gracefulStop(actorRef, Duration.create(1, TimeUnit.SECONDS)); Await.result(stopped, Duration.create(1, TimeUnit.SECONDS));
重新创建新Actor: context.actorOf(Props.create( GateActor.class, () -> new GateActor(hardwareRouterActorRef, settings)), settings.getUuid())
但它抛出异常: akka.actor.InvalidActorNameException: actor name [6237255c-851b-47d2-ac31-03c7635e6537] is not unique!
我认为gracefulStop代码没有删除子级Actor,我的问题是:如何删除子级Actor?
我还尝试使用PoisonPill删除Actor:
actorRef.tell(PoisonPill.getInstance(), getSelf());