java - 在 Akka 中从客户端向服务器发送毒丸

标签 java akka

我有一个使用 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/

相关文章:

java - Spring mvc Controller 返回Collection(set, list),jsp将其用作数组

java - Akka Java - 即时创建递归子 Actor ?

java - 如何在 application.conf 上引用 .properties 值

java - 如何将 ScrollView 添加到抽屉导航

java - 如何在 Apache Storm Trident 中确定事务是否成功提交

java - Spring Boot 2 依赖迁移问题

Java 和 JNA 为 C 函数传递参数

scala - Akka 流 : process CSV with header

scala - 值(value) !不是 akka.routing.Router 的成员

scala - Alpakka卡夫卡vs卡夫卡流