我有一个使用 Java API 编写的客户端服务器程序。正在尝试向服务器发送消息,然后服务器将向客户端发送一些回复消息。然后客户端向服务器发送毒丸。如果服务器收到毒丸消息,它必须关闭。下面的代码片段也是如此。 在 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
行没有执行,因此服务器始终在运行。
有人可以帮我解决这个问题吗?为什么该行根本不执行?
最佳答案
PoisonPill 由 Akka 自动处理。您不应该从 Actor 内部终止 ActorSystem。它相当于在业务对象内调用 System.exit(0)。 如果你想停止 ServerActor,请执行:context.stop(self)
关于java - 在 Akka 中从客户端向服务器发送毒丸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11100710/