从数据库初始化actor的最佳实践方法是什么?

Phe*_*nix 5 database scala initialization actor akka

我有一个顶级演员(在守护者下),Groups在启动时需要从数据库加载组列表并根据数据库中的这些组创建一组子actor.

我已将数据库加载代码放在preStart函数内部,因为我不希望在加载组之前处理任何消息.

目前我的Groups演员看起来像这样;

var groups: Map[String, ActorRef] = Map()

override def preStart() = {
  groups = getGroupsFromDB() map createGroup
}

def createGroup(pair: (String, Long)) = {
  val (name, id) = pair
  val group = context.actorOf(Props(new Group(id, name)), name = name)

  name -> group
}
Run Code Online (Sandbox Code Playgroud)

但是,我不相信这是处理这种情况的最佳方法,如果数据库服务器不可用会发生什么?那么从数据库处理数据初始化的最佳实践方法是什么?

Per*_*ega 1

Akka文档解释了如何监督顶级参与者的容错能力。

您可以应用其中的原则来管理数据库不可用时可能发现的异常。