scala - Actor 应该如何通知发件人错误?

标签 scala exception error-handling actor akka

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

假设 actor 捕捉到了异常,那么它应该做什么呢?

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

所有响应消息都应该包含status 字段还是应该为我的应用程序中的每个响应消息都存在XXXErrorMessage 类?

Actor 模型中错误处理的最佳实践是什么?

最佳答案

你应该谷歌“erlang supervisor design”,因为 Actor 模型主要是用 erlang 铺设的。然后,您可以将所描述的知识应用于 Akka actors(它正在成为 Scala 2.10 中的标准 actor 库)。另请阅读上面关于 supervision 的评论 akka 文档和 fault tolerance .

或者,您可以选择不使用 Actors,而是使用 Future相反,它更容易编写。然后您将拥有 Future[Either[E, A]] 类型,您可以使用 scalaz 将其视为组合的 EitherT[Future, E, A] monad 类型+ akkaz并将其用于理解等方面。

如果我预计会有很多失败,需要重新启动并重试,必须封装可变状态等,我会选择 Actors。如果你不需要这些,你可以回退到 Futures 并睡个好觉。

关于scala - Actor 应该如何通知发件人错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12369375/

相关文章:

scala - Scala 中计算素数流的代码

scala - future 和 future 有什么区别?

java - JTextField 中的异常处理

c - For 循环函数的参数太少

reactjs - react native 应用程序中重新呈现限制的dispatchAction错误

java - 如何外部化错误信息

mysql - 是否可以使用 Anorm 在带有 VARCHAR PK 的表中插入记录?

scala - 元组 RDD 的 SortByValue

java - Java 异常构造函数是否必需?

python - python 的 `os.system` 会抛出异常吗?