2016-07-22 36 views
2

演員失敗時,我需要將失敗的原因發送給其他演員。演員終止的原因或如何處理錯誤

我知道有監督策略,我使用它們。問題是 - 我找不到這種錯誤報告的正確位置。 我試着看演員,但終止消息不提供終止的原因。 目前,我說的錯誤在決勝盤處理:

override def supervisorStrategy: SupervisorStrategy = 
    OneForOneStrategy(maxNrOfRetries = 10, withinTimeRange = Duration(1, TimeUnit.SECONDS), loggingEnabled = true) { 
     case e: Exception => 
     onActorError(sender(), e) 
     Stop 
    } 

但我認爲這是不這樣做,「決策者」應該返回的戰略,而不是隱式做別的事情的好時間和地點。

所以問題是:是否有一個適當的地方來捕捉演員異常並做一些事情呢?

回答

1

postRestart監督演員的方法似乎是一個很好的地方做事後記錄。 從documentation

新演員的postRestart方法被調用與 造成重啓例外。默認情況下,調用preStart,就像在 正常啓動情況下一樣。

+0

演員已停止,未重新啓動。所以postRestart可能永遠不會被稱爲 –

+0

postStop應該在stop()之後被調用,不管.. –

+0

是的,但是postStop沒有參數...所以沒有辦法確定在這個點停止的原因 –