我知道演员的激励处理通常应该采用主管策略。但这对所有情况都有效吗?
示例
如果我严格遵守akka演员的错误处理策略,那么监督演员就必须处理这种情况。
我宁愿在数据库actor中捕获异常并向源actor发送一条消息,说明出错了。然后源actor可以做出反应(注册到数据库并再次尝试)。
这是一个好习惯吗?或者总演员设置错了?如果首选策略,应该如何实施?
答案 0 :(得分:0)
在您认为合适的情况下捕捉异常并将其作为回应是完全正确的。我建议使用Scala的Try,如:
Try(dangerousOperation()) match {
case Success(res) => sender() ! res
case Failure(ex) => sender() ! UnableToStoreThingy("reasons...", ex)
}
或者类似的东西(你也可以try.failed.map { ex => doThings(ex) }
),取决于你的风格偏好。