2012-12-03 146 views
5

我有一个顶级演员(监护人下),名为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 
} 

但是我不相信这是处理这个问题的最好方法,因为如果数据库服务器不可用会发生什么?那么从数据库中处理数据初始化的最佳实践方式是什么?

回答

1

Akka documentation解释如何监督顶级参与者的容错。

您可以将原理应用于管理数据库不可用时可能会遇到的异常。

+0

谢谢,我已将该页面的想法用于我的设计中。即具有分离的存储/数据库角色。我希望有一个如何管理数据库连接的代码示例。 – Phenix

相关问题