演员如何通知发件人错误?

时间:2012-09-11 12:08:27

标签: scala exception error-handling actor akka

我是演员模型的新手,我想知道应该如何处理运行时错误。

假设actor捕获异常,它应该怎么办?

我绝对希望发件人收到任何错误的通知,因此,至少发件人可以记录错误。

是否所有响应消息都包含status字段,或者应用程序中的每条响应消息是否都存在XXXErrorMessage类?

演员模型中错误处理的最佳做法是什么?

1 个答案:

答案 0 :(得分:2)

你应该google“erlang supervisor design”,因为Actor模型大多是在erlang中铺平的。然后,您可以将所描述的知识应用于Akka actor(它在Scala 2.10中成为标准actor lib)。另请阅读以上评论的supervisionfault tolerance上的akka​​文档。

或者,您可以选择不使用Actors,而是选择Future,这样更容易编写。然后,您将拥有Future[Either[E, A]]种类型,您可以使用scalaz + akkaz将其视为合并的EitherT[Future, E, A] monad类型,并将其用于例如理解。

如果我期待很多失败,需要重新启动和重试,需要封装可变状态等,我会选择Actors。如果你不需要这些,你可能会回到Future s并且睡个好觉。