在java中
我有简单的网络应用程序。在ServletContextListener
我创建了演员
ActorSystem system = ActorSystem.create("MySystem");
actor = system.actorOf(new Props(MyServerActor.class), "MyServer");
actor.tell(new StartMessage());
此演员有路径akka://MySystem/user/MyServer
。然后我尝试从业务方法
ActorSystem system = ActorSystem.create("MySystem");
client = system.actorSelection("/user/MyServer"); // same effect when use actorFor
client.tell("OK");
onReceive
方法:
@Override
public void onReceive(Object message) throws Exception {
System.out.println(message + " : " + message);
}
但我的演员没有收到消息。它看起来像我发送到/ dev / null。
哪里出错?
//编辑:
我也尝试使用完整路径。
答案 0 :(得分:3)
好的,我太蠢了......
我创建了两个System
因此无法访问另一个,找不到actor所以消息被发送到/dev/null
答案 1 :(得分:3)
你可以试试远程演员:
String path = "akka://MySystem@some-ip:some-port/some/sub/path"
ActorRef xxx = actorSystem.actorFor(path);
此外,如果您订阅deadLetters()actor以记录未处理的消息,那会更好。
final ActorRef actor = actorSystem.actorOf(new Props(DefaultDeadLetterHandlerActor.class));
actorSystem.eventStream().subscribe(actor, DeadLetter.class);
或者只是简单地记录它们。