2016-05-01 46 views
0

如何獲取失敗節點的actorRef或名稱?如果發生異常,我需要重新啓動節點。如果異常發生> 1,那麼我需要恢復。如何在OneForOneStrategy設置中獲取失敗演員的actorRef?

我的想法是讓主管存儲給定節點發生異常的次數 - 但我找不出哪個節點失敗。也許這種做法很糟糕。

x將是發生故障的節點發生特定異常的次數。

OneForOneStrategy() { 
    case _: FileNotFoundException => 
     // Need to know how many times node n has had this exception and restart/resume as required. 
     if(x == 1) 
      Restart 
     else 
      Resume 
    case _: Exception => Stop 
} 

回答

0

你可以趕上FileNotFoundException並拋出一個CustomException有一個ActorRef字段設置爲除外演員(個體經營)。然後在您的OneForOne中,您會看到的ActorRef字段已設置爲問題演員。所以現在你有一個參考失敗的演員,然後檢查你的主管內部描述的異常計數,並打電話是否重新啓動/恢復。

1

實際上,在主管的判決器中,您可以通過sender()方法獲取失敗的子女的ActorRef。