Ho un oggetto java che non è un attore che seleziona attori da un sistema di attori con actorSelection (Path)). È possibile che l'attore selezionato non esista nel sistema.Come posso verificare se esiste un attore Akka (akka 2.2)?
Nel Java Api ask() non esiste per ActorSelection, quindi non è possibile inviare e identificare il messaggio alla selezione dell'attore e utilizzare il mittente della risposta.
Ho provato a risolvere il problema inviando il messaggio all'attore attraverso la selezione dell'attore e poi reagendo alla lettera. Ma non ricevo nessuna lettera morta.
Come posso verificare con ActorSelection se l'attore è vivo o non esiste?
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, che, come una svista, grazie per segnalarlo: https://www.assembla.com/spaces/akka/simple_planner#/ticket: 3532 –