我想知道每个工人演员是否完成,来自主演员。 请帮助我 ... 我有一个mainActor 和Worker1 Worker2 Worker3。 这里Worker1 Worker2和Worker3正在执行并行。 如何识别每个工作人员是否已从mainActor完成?
答案 0 :(得分:1)
依赖关系将您的主引用注入到工作者的构造函数中,并在工作完成时让主人知道。
以下是一个示例Worker:
<a xlink:href="//google.com">
<image width="438" height="189" xlink:href="button.png"></image>
</a>
以及基于documentation的主要演员定义的附带示例:
public class CompletedJob {
public ActorRef actorRef;
CompletedJob(ActorRef actorRef_i) { actorRef = actorRef_i;}
}
class WorkerActor extends UntypedActor {
private ActorRef masterRef;
//pass masterRef into the constructor
WorkerActor(ActorRef masterRef_i) {
masterRef = masterRef_i;
}
public void onReceive(Object message) throws Exception {
if(message instanceof Work) {
Work work = (Work) message;
getSender().tell(longProcess(work), getSelf()); //send result to work sender
masterRef.tell(CompletedJob(getSelf()), getSelf()); //send completion to master
}
}
}
答案 1 :(得分:0)
akka中存在一些关闭情况的文档模式,您可以轻松地在您的情况下重用:
作者称这些模式中的一种&#34; Reaper&#34;,它本质上是一个专门的演员,其任务是等待其他类型的演员死亡。