我有一個java對象,它不是一個從actor系統(Actor)中選擇actor的actor。可能的是,選定的actor在系統中不存在。如何檢查Akka actor是否存在(akka 2.2)?
在Java Api中,對於ActorSelection而言,ask()不存在,所以我無法發送和Identify消息給actor選擇並使用響應的發送者。
我試圖通過演員選擇將消息發送給演員來解決問題,然後對deadletter作出反應。但我沒有得到任何死路一條。
如果演員還活着或不存在,我該如何檢查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);
哎呀,這是一個監督的,謝謝指點出來:https://www.assembla.com/spaces/akka/simple_planner#/ticket: 3532 –