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
范式的方法听起来对我来说是逻辑的,谢谢你。 –