5
有沒有辦法在演員主管的SupervisorStrategy中獲取消息?我的意思是導致演員失敗的那個人。我想從中獲取一些數據。Akka - 是否有可能在演員的主管中收到失敗的消息?
有沒有辦法在演員主管的SupervisorStrategy中獲取消息?我的意思是導致演員失敗的那個人。我想從中獲取一些數據。Akka - 是否有可能在演員的主管中收到失敗的消息?
一種可能的方法:
例如:
// The new exception type
case class MessageException(
akkaMessage: Any,
originalException: Throwable
) extends RuntimeException("Exception due to message")
// In the supervised actor
def receive = {
case msg => try{ process(msg) } catch {
case t => throw MessageException(msg,t)
}
}
// In the supervisor
override val supervisorStrategy =
OneForOneStrategy(maxNrOfRetries = 10, withinTimeRange = 1 minute) {
case MessageException(msg,t) => //decide what to do
}
是的,我能做到這一點,但在監督的演員我再從catch塊發送失敗消息給監督員。按照「Akka in Action」中的建議,我想擺脫受監督演員的嘗試和捕獲 – boneash
這裏try catch本身沒有邏輯,它只是向異常添加更多數據。真正的錯誤處理仍然在管理程序中完成,try/catch代碼可以在一個方法中被抽象化。 – paradigmatic
範式的方法聽起來對我來說是邏輯的,謝謝你。 –