2012-12-03 10 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