我是演员模型的新手,我想知道应该如何处理运行时错误。
假设actor捕获了异常,那么它应该怎么做呢?
我绝对希望将任何错误通知发件人,因此,至少发件人可以记录错误。
所有响应消息都应该包含status
字段还是应该为我的应用程序中的每个响应消息都存在XXXErrorMessage
类?
演员模型中错误处理的最佳实践是什么?
我是演员模型的新手,我想知道应该如何处理运行时错误。
假设actor捕获了异常,那么它应该怎么做呢?
我绝对希望将任何错误通知发件人,因此,至少发件人可以记录错误。
所有响应消息都应该包含status
字段还是应该为我的应用程序中的每个响应消息都存在XXXErrorMessage
类?
演员模型中错误处理的最佳实践是什么?
你应该在谷歌上搜索“erlang supervisor design”,因为 Actor 模型主要是用 erlang 铺设的。然后,您可以将所描述的知识应用到 Akka 演员(正在成为 Scala 2.10 中的标准演员库)。另请阅读上述关于监督和容错的评论 akka 文档。
或者,您可以选择不使用 Actors,而是使用Future
更容易组合的 s。然后您将拥有Future[Either[E, A]]
类型,您可以使用scalaz + akkazEitherT[Future, E, A]
将其视为组合的monad 类型,并将其用于例如理解。
如果我预计会有很多失败,我会选择 Actors,需要重新启动和重试,必须封装可变状态等。如果你不需要这些,你可以回退到Future
s 并有一个更好的睡眠。