我在 Java 8 中使用 Akka 2.5.6,我想知道完成 de ActorSystem 的正确方法,我的代码的部分功能是处理一些 XML 文件并验证它们,为此我创建了 3 个参与者:控制器,处理器和验证器。Controller负责启动流程,将文件和其他信息逐个发送给Processor,然后Processor创建文件的数字签名并将响应发送给Validator,Validator最终验证状态并向Controller发送OK消息这是计算已验证文件的数量并将它们与总文件进行比较。一旦文件总数与经过验证的文件总数相等,我就使用 terminate () 方法调用来完成 ActorSystem。
完成方法如下:
private void endActors()
{
ActorSystem actorSystem = getContext().system();
Future <Terminated> terminated = actorSystem.terminate();
do {
log.info ("Waiting to finish ...");
try {
Thread.sleep (30000L);
} catch (InterruptedException ex) {
log.error ("Error in Thread.");
}
} while (! ended.isCompleted ());
log.info ("Actors finished processing.");
}
循环永远不会结束,因为未来永远不会完成,我不知道这是否是正确的方式,我希望你能理解我并可以帮助我或给我一些建议。