我们在前面介绍Actor系统时说过每个Actor都是其子Actor的管理员,并且每个Actor定义了发生错误时的管理策略,策略一旦定义好,之后不能修改,就像是Actor系统不可分割的一部分。
实用错误处理
首先我们来看一个例子来显示一种处理数据存储错误的情况,这是现实中一个应用可能出现的典型错误。当然实际的应用可能针对数据源不存在时有不同的处理,这里我们使用重新连接的处理方法。
下面是例子的源码,比较长,需要仔细阅读,最好是实际运行,参考日志来理解:
2 | import akka.actor.SupervisorStrategy. _ |
3 | import scala.concurrent.duration. _ |
4 | import akka.util.Timeout |
5 | import akka.event.LoggingReceive |
6 | import akka.pattern.{ask, pipe} |
7 | import com.typesafe.config.ConfigFactory |
12 | object FaultHandlingDocSample extends App { |
16 | val config = ConfigFactory.parseString( "" " |