J'ai un objet java qui n'est pas un acteur qui sélectionne des acteurs d'un système d'acteur avec actorSelection (Path)). Il est possible que l'acteur sélectionné n'existe pas dans le système.Comment puis-je vérifier si un acteur Akka existe (akka 2.2)?
Dans l'Api Java, ask() n'existe pas pour ActorSelection, donc je ne peux pas envoyer et identifier un message à la sélection d'acteur et utiliser l'expéditeur de la réponse.
J'ai essayé de résoudre le problème en envoyant quand même le message à l'acteur via la sélection de l'acteur puis en réagissant à la lettre. Mais je ne reçois aucune lettre d'information. Comment puis-je vérifier avec Actorselection si l'acteur est vivant ou n'existe pas?
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, que comme un oubli, merci de le faire remarquer: https://www.assembla.com/spaces/akka/simple_planner#/ticket: 3532 –