У меня есть объект java, который не является актером, который выбирает актеров из актерской системы с помощью actorSelection (Path)). Возможно, что выбранный актер не существует в системе.
В Java Api ask() не существует для ActorSelection, поэтому я не могу отправить и идентифицировать сообщение для выбора актера и использовать отправителя ответа.
Я попытался решить проблему, отправив сообщение актеру в любом случае с помощью выбора актера, а затем отреагировав на прописку. Но я не получаю никаких сводок.
Как я могу проверить с помощью ActorSelection, если актер жив или не существует?
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);