3
我在管理監督方面存在問題。Akka模型監督
假設我有演員A創建演員B並向他發送消息。
val B = context.actorOf(Props[B],"B")
B ! RandomMessage(param1, param2)
B做這樣的計算或要求遠程服務。基本上它可能會失敗,異常。
override val supervisorStrategy = OneForOneStrategy(loggingEnabled = false) {
case exception:NetworkException => {
Restart
// here I don't have access to param1 and param2 to send message again
}
}
它工作正常,因爲兒童演員重新啓動,但如果我要重試此失敗的消息是什麼。我怎樣才能做到這一點 ?
我可以使用preRestart,但是我必須將消息:Option [Any]轉換爲我的命令類型。現在我只有一個命令,但後來我可能會添加更多,並可能有問題 – Axpom
我猜你已經在'receive'方法中使用模式匹配來處理消息。對於來自preRestart的消息也是一樣。只要確保使用'Option#get',而不是發送選項本身。 – 757071
做*不*使用Option.get,這是一個選項,它並不總是可用的原因。 –