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
}

ただし、これがこれを処理する最善の方法だとは思いません。データベース サーバーが利用できない場合はどうなりますか? では、データベースからのデータの初期化を処理する最善の方法は何ですか?

4

1 に答える 1

1

Akka のドキュメントでは、フォールト トレランスのためにトップ レベルのアクターを監視する方法について説明しています。

そこにある原則を適用して、DB が利用できない場合に見つかる可能性のある例外を管理できます。

于 2012-12-03T16:31:38.317 に答える