在Akka向客户端发送毒药到服务器

时间:2012-06-19 12:16:29

标签: java akka

我有一个使用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行未执行,因此服务器始终在运行。

任何人都可以帮我这个吗?为什么这条线根本没有执行?

2 个答案:

答案 0 :(得分:3)

PoisonPill由Akka自动处理。您不应该从Actor中终止ActorSystem。它等同于在Business Object中调用System.exit(0)。 如果要停止ServerActor,请执行:context.stop(self)

答案 1 :(得分:1)

不应该是

remoteActor.tell(new PoisonPill());