0

以下に示すように、いくつかの既存のアクターにメッセージを投稿しようとしていますが、存在しないアクターを参照する可能性があるため、メッセージを投稿する前に知りたいです。前もって感謝します

actor = getContext().actorFor("actorSystem/user/" + nameOfActor);
actor.tell("message",getSelf());
4

4 に答える 4

2

実際のメッセージを送信する前に、識別メッセージを送信できます。すべてのアクターはそれを理解し、 で応答する必要がありSelf()ます。resolveOneまたは、次の方法を使用します。

ActorSelection の resolveOne メソッドを使用して、ActorSelection の ActorRef を取得できます。そのようなアクターが存在する場合、一致する ActorRef の Future を返します。そのようなアクターが存在しないか、指定されたタイムアウト内に識別が完了しなかった場合、失敗 [[akka.actor.ActorNotFound]] で完了します。

于 2013-09-16T06:44:51.747 に答える
1

アクターが (DeathWatch なしで) 生きていることを知る唯一の方法は、アクターからメッセージを受信することです。そしてそれは、ある時点 (メッセージを送信した時点) でアクターが生きていたことを証明するだけです。

于 2013-09-18T11:39:00.380 に答える
0

実際には、受信したすべてのメッセージを処理する必要があります。アクターが存在しない場合、そのメッセージは個別に処理する必要があり、Deadletter 実装を使用して達成しました

final ActorRef actor = actorSystem.actorOf(new Props(DeadLetterHandlerActor.class));
actorSystem.eventStream().subscribe(actor, DeadLetter.class);
于 2013-10-10T09:35:30.943 に答える