我有三个演员。演员A产生演员B和演员C来执行各种任务,并且不依赖于演员B和C的结果

角色B和C的创建方式如下:

ActorRef actorB = this.getContext().actorOf(Props.create(ActorB.class, t));
actorB.tell(new msg, getSelf());

ActorRef actorC = this.getContext().actorOf(Props.create(ActorC.class, t));
actorC.tell(new anothermsg, getSelf());


在每个参与者完成任务后,如何确保拆除此层次结构?

我是否向演员B和演员C发送明确的poisonPill消息?
还是会照顾好它?

最佳答案

如果希望B和C独立于A停止,那么最简单的方法是让他们在工作完成后调用context stop self。可以通过-例如注册A来通知此事件。 -context watch b

否则,如果您希望整个层次结构同时停止(即,当A终止时),那么您只需要停止A,因为所有子级都会因此自动停止。

有关该主题的更全面介绍,请参见here

10-06 11:13