我有一个使用Java API编写的客户端服务器程序。我试图向服务器发送消息然后服务器将向客户端发送一些回复消息。然后客户端向服务器发送毒药。如果服务器收到毒药消息,则必须关闭。下面的代码代码为snippents。 在ClientActor中:
remoteActor.tell(poisonPill());
在ServerActor中:
public void onReceive(Object message) throws Exception {
if (message instanceof String) {
getSender().tell(message + " got something");
} else if (message instanceof PoisonPill) {
getContext().system().shutdown();
}
}
但message instanceof PoisonPill
行未执行,因此服务器始终在运行。
任何人都可以帮我这个吗?为什么这条线根本没有执行?
答案 0 :(得分:3)
PoisonPill由Akka自动处理。您不应该从Actor中终止ActorSystem。它等同于在Business Object中调用System.exit(0)。 如果要停止ServerActor,请执行:context.stop(self)
答案 1 :(得分:1)
不应该是
remoteActor.tell(new PoisonPill());