私は、actorSelection(Path) を使用してアクター システムからアクターを選択するアクターではない Java オブジェクトを持っています。選択したアクターがシステムに存在しない可能性があります。
Java API では、ActorSelection の ask() が存在しないため、アクターの選択にメッセージを送信して識別し、応答の送信者を使用することはできません。
とにかくアクターの選択を介してアクターにメッセージを送信し、デッドレターに反応することで問題を解決しようとしました。しかし、私はデッドレターを受け取りません。
アクターが生きているか存在しないかを 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);