私のアプリケーションは、アクターのツリー構造を作成できる必要があります。これを行う標準的な方法は、インスタンス化コードをアクター内に配置して、子をインスタンス化できるようにすることです。私が望むアプローチは、特定のパスでアクターをインスタンス化できるようにすることです。mySystem でアクター A を作成し、直接 akka://mySystem/A/B および他のアクターを作成できるようにするなどです。そのような機能は存在しますか?それは私のコードを大幅に簡素化します。
編集: 携帯電話を使用していないので、詳しく説明させてください。
クラスがあると言う
class myActor extends actor
これらの n-way ツリーを作成する必要があります。次のようなものを使用して、受信関数で独自の子をインスタンス化するために必要なコードを用意する代わりに
case Create(n:Int) => {}
それを含めずに、コードの開始時に階層を手動で作成できるようにすることで、myActor コードを簡素化しようとしています。したがって、理想的には次のようなものです(仮想の静的関数「作成」を想定):
val sys = ActorSystem("mySystem")
Akka.Actors.Create("akka://mySystem/a", new myActor())
Akka.Actors.Create("akka://mySystem/a/b", new myActor())
Akka.Actors.Create("akka://mySystem/a/c", new myActor())
これにより、アクター ツリーが作成されます。
a
/ \
b c
さて、これはありますか?アクター コードをインスタンス化コードで乱雑にすることなく、これを行うためのより良い方法はありますか?
編集、ラウンド2:
わかりました、この機能は存在しないようです。代わりに、アクターのサブ特性を作成し、そこにすべてのインスタンス化コードを強制して、具体的な実装クラスが整然とした状態に保たれるようにしました。