以下に示すように、いくつかの既存のアクターにメッセージを投稿しようとしていますが、存在しないアクターを参照する可能性があるため、メッセージを投稿する前に知りたいです。前もって感謝します
actor = getContext().actorFor("actorSystem/user/" + nameOfActor);
actor.tell("message",getSelf());
実際のメッセージを送信する前に、識別メッセージを送信できます。すべてのアクターはそれを理解し、 で応答する必要がありSelf()
ます。resolveOne
または、次の方法を使用します。
ActorSelection の resolveOne メソッドを使用して、ActorSelection の ActorRef を取得できます。そのようなアクターが存在する場合、一致する ActorRef の Future を返します。そのようなアクターが存在しないか、指定されたタイムアウト内に識別が完了しなかった場合、失敗 [[akka.actor.ActorNotFound]] で完了します。
アクターが (DeathWatch なしで) 生きていることを知る唯一の方法は、アクターからメッセージを受信することです。そしてそれは、ある時点 (メッセージを送信した時点) でアクターが生きていたことを証明するだけです。
実際には、受信したすべてのメッセージを処理する必要があります。アクターが存在しない場合、そのメッセージは個別に処理する必要があり、Deadletter 実装を使用して達成しました
final ActorRef actor = actorSystem.actorOf(new Props(DeadLetterHandlerActor.class));
actorSystem.eventStream().subscribe(actor, DeadLetter.class);