8

ActorFor を使用して既存の ActorRef を取得しようとしていますが、存在しない場合は新しいものを作成しようとしています。次のコードがありますが、期待どおりに動作しないようです。.isTerminated() は常に true です。

ActorSystem system = ActorSystem.create("System");

            ActorRef subscriberCandidate = system.actorFor("akka://System/user/"+name);

            if (subscriberCandidate.isTerminated())
            {
                ActorRef subscriber = system.actorOf(new Props(new UntypedActorFactory() {
                      public UntypedActor create() {
                        return new Sub(name,link);
                      }
                    }), name);
                System.out.println(subscriber.path().toString() + " created");
            }
            else
                System.out.println("already exists"); 

ここで何が欠けていますか?前もって感謝します。

4

3 に答える 3

2

ルックアップを次のように変更します。

system.actorFor("/user/" + name)

これが検索しているローカル アクターである場合、「akka://System」の部分は必要ありません。ただし、これは、このアクターがコードの別の場所で既に起動されていることを前提としています。そうでなければうまくいきません。

于 2013-04-29T10:57:08.023 に答える
1

指定されたコードに基づいて、actorFor存在しないアクターを検索するために呼び出しています。actorOfアクターは呼び出される まで存在しません。

于 2013-04-28T23:10:27.180 に答える