Ich habe ein Java-Objekt, das kein Akteur ist, der mit actorSelection (Path) Actors aus einem Actor-System auswählt. Es ist möglich, dass der ausgewählte Akteur im System nicht existiert.Wie kann ich prüfen, ob ein Akka Actor existiert (akka 2.2)?
In der Java-API existiert ask() nicht für ActorSelection, daher kann ich keine Nachricht an die Aktorauswahl senden und identifizieren und den Absender der Antwort verwenden.
Ich versuchte das Problem zu lösen, indem ich die Nachricht über die Aktorauswahl an den Aktor schickte und dann auf den Deadletter reagierte. Aber ich bekomme keine Deadletters.
Wie kann ich mit der ActorSelection überprüfen, ob der Schauspieler lebt oder nicht existiert?
ActorSystem system = ActorSystem.create("test");
//create test actor
system.actorOf(Props.create(TestActor.class), "testActor");
//add dead letter listener to the system
ActorRef eventBusActor = asys.actorOf(Props.create(EventBusActor.class), "eventbusactor");
system.eventStream().subscribe(eventBusActor, DeadLetter.class);
//This works. The test actor receives the message
ActorSelection a1 = asys.actorSelection("/user/testActor");
a1.tell("hello", ActorRef.noSender());
//This does not work and does not send dead letters
ActorSelection a2 = asys.actorSelection("/user/doesnotexist");
a2.tell("hello", ActorRef.noSender());
//Does not compile, because ask needs an ActorRef as first argument
ActorSelection a3 = asys.actorSelection("/user/test");
Future f = Patterns.ask(a3, new Identify(), 1000);
Oops helfen, dass als ein Versehen, vielen Dank für den Hinweis it out: https://www.assembla.com/spaces/akka/simple_planner#/ticket: 3532 –