当前位置: 首页 > 知识库问答 >
问题:

阿克卡:如何删除儿童演员

令狐珂
2023-03-14

我有父母和孩子。每个儿童演员控制一个装置。当我创建所有的子角色时,我给他们一个uuid。

每个子参与者都是通过设备配置创建的,当配置更改时,我希望通过以下方式重新创建参与者:

>

  • 停止旧的:

    最终的未来停止了=优雅的停止(actorRef,Duration.create(1,时间单位。秒)); Await.result(停止,Duration.create(1, TimeUnit.二));

    重新创建一个新的:

    context.actor(Props.create(GateActor.class , () -

    但它抛出了一个异常akka。男演员InvalidActorNameException:参与者名称[6237255c-851b-47d2-ac31-03c7635e6537]不唯一

    我认为gracefulStop代码不会删除儿童演员,我的问题是:如何删除儿童演员?

    我还试着用一颗毒药将一名演员除名:

    actorRef.tell(PoisonPill.getInstance(), getSelf());
    

  • 共有1个答案

    松英喆
    2023-03-14

    从官方文件:

    请记住,一个参与者停止和它的名字被注销是独立的事件,它们彼此异步发生。因此,您可能会发现该名称仍在使用后,Grace()返回。为了保证正确的注销,只能在您控制的主管内部重用名称,并且只能响应已终止的消息,即不适用于顶级参与者。

    因此,只有在接收到监管角色应该注册的Terminated消息后,您才应该执行创建具有回收名称的角色。

     类似资料:
    • 我是Akka的新手,我想知道我应该如何处理将工作委托给其他(儿童)演员的演员,但在哪里: 其中一些儿童演员必须按特定顺序参与;和 其中一些子参与者可以以任何顺序参与,并且可以真正地与主/父参与者所做的事情异步执行 假设我有以下儿童演员(不管他们做什么): 假设我有以下调用它们的父参与者: 如你所见: 必须首先“参与”(由家长调用),我们必须等待家长的响应,然后才能继续参与/调用、或 换句话说,当消

    • 在主管内部- 以下是我主管课程的一部分: 以下是导致子参与者停止的条件: 在akka工具包中,我可以使用哪个API打印我的Supervisor类中所有子角色的状态?

    • 我对阿克卡很陌生,我有一个(希望)简单的问题。我有一个参与者需要重复执行某个小的子任务——也就是说,每次这个参与者收到消息时,它都必须执行N个子任务。这个子任务是我指定给儿童演员的。我的问题是,我是否应该为每个子任务创建一个新的子角色实例?或者我应该简单地产生一个孩子演员,并发送N条消息?在这种情况下,最好的做法是什么? 为了更好地说明我的问题,这里有两个简化的示例(在Java中-但希望对Scal

    • 我有三种模式:有许多有许多。当我删除一个用户时,我希望自动删除他所有相关的帖子以及与这些帖子相关的评论。为了实现这一点,我在和模型中有以下代码: 当我删除一个用户时,他的所有帖子都会被删除,但是评论会被保留。为什么会发生这种情况?

    • 有人知道我为什么会有这种行为吗?是我的代码出了bug还是什么问题?