1

誰かがこの質問で私を助けることができますか?Javaでakkaを使用する場合、akkaパラメーターを受け取るコンストラクターを使用して子アクターを作成することは可能ですか。マスターアクターがチャイルドアクターの作成を担当していることを私は知っているからです。したがって、コンストラクターでパラメーターを受け取る子アクターがある場合。

子アクターへの呼び出しがあるときはいつでも、マスターアクターは、パラメーターを子アクターに渡すために、子アクターの新しいインスタンスを作成する必要があることを意味しますか。

4

3 に答える 3

4

もう1つの方法は、UntypedActorFactoryを使用することです(少なくともakka 2.1.2では)。

ActorRef myActor = system.actorOf(new Props(new UntypedActorFactory() {
  public UntypedActor create() {
    return new MyActor("...");
  }
}), "myactor");

「デフォルト以外のコンストラクターを使用したアクターの作成」のドキュメントを参照してください。

于 2013-05-20T22:03:32.333 に答える
3

ロバートが言うように、アクターが作成されたら、それにメッセージを送信するだけです。これは、別のアクターから実行できるパラメーターを使用してアクターを作成する方法です。

Akka 2.2以降、UntypedActorFactoryは廃止されました。

代わりに、私の意見では、次のようにするのが最も簡単な方法です。

ActorRef myActor = system.actorOf(Props.create(MyActor.class, params), "MyActor");

または、次のようにCreatorを実装できます。

static class MyActorC implements Creator<MyActor> {
  @Override public MyActor create() {
    return new MyActor("...");
  }
}

詳細については、こちらをご覧ください。

http://doc.akka.io/docs/akka/2.2.3/java/untyped-actors.html#untyped-actors-java

于 2013-12-24T13:54:53.377 に答える
1

必ずしも。アクターが作成されると、ユーザーはそのアクターに直接メッセージを送信できるようになります。各メッセージの作業を行うために新しいアクターを作成する必要があるシステムがある場合は、スーパーバイザーにアクターを作成させてから、アクターにtell()メカニズムを介してデータを返送させることをお勧めします。

于 2013-02-17T16:46:31.890 に答える