2

多数のアッカ俳優の作成をどのように管理すべきかについて誰かアドバイスがありますか?

私の新しいミドルウェアプロジェクトには現在約10人のアクターが含まれていますが、時間の経過とともにこれは必然的に多数になります。関数内にすべてのアクターを作成していmainますが、関数が画面全体に広がるため、システムが成長するにつれて、これが制御不能になる可能性があります。

もちろん、すべてのアクターの作成を別のクラスの関数に移動することもできますが、これでは問題自体は実際には解決されません。

このセットアップ手順の管理に役立つパターンがあるかどうかわかりませんか?

4

3 に答える 3

3

通常は、トップレベルのアクター(つまり、system.actorOfを使用して作成されたアクター)がいくつかあるはずです。これは、すべてのアクターが他のアクターのために物事を台無しにする可能性が同じである場合、フォールトトレランスが非常に低くなるためです。したがって、実行する必要があるのは、アプリケーションに失敗を含める方法を考えてから、context.actorOfを使用して他のアクターの子としてアクターを作成することです。

于 2012-07-17T18:32:22.310 に答える
2

それは本当に俳優の関係に依存します。それらが互いに親子関係を持っていない場合、どこから始めてもかまいません。彼らがそのような関係を持っている場合、あなたは彼らの親の中であなたのアクターを始めるべきです、なぜならあなたはcontextその子として別のアクターを作成するために親アクターのを使わなければならないからです。

于 2012-07-17T16:27:17.523 に答える
1

あなたが作成している俳優の性質についてもっと知らずにあなたの質問に答えることは難しいです。たとえば、アクターを論理的にグループ化できる場合は、次のようにします。

def initialize() = {

    // Initialize Misc actors
    val foo = FooActor()
    val bar = BarActor()

    initializeActorsThatDoStuff()
    initializeActorsThatDoOtherStuff()

}

彼らが親子関係を持っている場合は、@drexinが示唆するように行う必要があります。


編集:ほとんど忘れてしまいました:同じタイプの複数のアクターを異なるパラメーターで作成しているのですが、もちろんループを使用し、コピーアンドペーストはしません。

def initializeLotsOfActors(num:Int) =
    for(i <- 0 to num) new ActorThatTakesAnInt(i);

(コピーアンドペーストが好きな人はいないからです:D)

于 2012-07-17T17:21:22.500 に答える