2012-12-03 3 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는 내결함성을위한 최고 수준의 배우를 감독하는 방법을 설명합니다.

당신은 DB를 사용할 수없는 경우 찾을 수있는 예외를 관리하기 위해이 원칙을 적용 할 수 있습니다.

+0

감사합니다. 해당 페이지에서 아이디어를 가져 와서 디자인에 사용했습니다. 즉 분리 된 저장/DB 행위자를 갖는다. 데이터베이스 연결을 관리하는 방법에 대한 코드 샘플이 있었으면 좋겠습니다. – Phenix

관련 문제