我们在前面介绍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( "" " |