我有一个顶级演员(在监护人之下),Groups
在启动时调用它需要从数据库中加载组列表并根据数据库中的这些组创建一堆子演员。
我已将数据库加载代码放在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
}
但是我不认为这是处理此问题的最佳方法,因为如果数据库服务器不可用会发生什么?那么从数据库处理数据初始化的最佳实践方法是什么?