0
在Java 8中使用Akka 2.5.6我想知道正確的方式來完成ActorSystem,我的代碼的一部分功能是處理一些XML文件並驗證它們,以實現我已經創建了3個角色: 控制器,處理器和驗證器。 控制器負責啓動進程並通過文件和其他信息向處理器發送文件,然後處理器創建該文件的數字簽名並將響應發送給驗證器,最終驗證狀態並向其發送一條OK消息控制器對正在驗證的文件數進行計數,並將其與總文件進行比較。一旦文件總數與經過驗證的文件總數相等,我就調用以terminate()方法完成ActorSystem。Akka ActorSystem永遠不會以Java終止
完成的方法如下:
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.");
}
的循環永遠不會結束,因爲未來是永遠不會完成,我不知道這是正確的方式,我希望你能理解我,能不能幫我或給我一些建議。
我想這樣做,但它不工作,我到底得到類型InterruptedException的或TimeoutException異常的一個例外,因爲它超過了超時,我不明白:這可能是簡單的在你的控制器演員以下問題是什麼。我也改變了akka和依賴關係的版本,現在我使用這些庫:akka-actor_2.12-2.4.17,config-1.3.0和scala-library-2.12.1。 –