gpt4 book ai didi

scala - remote.shutdown() 不会杀死 akka 远程 actor 本身

转载 作者:行者123 更新时间:2023-12-01 13:00:16 24 4
gpt4 key购买 nike

object RemoteEchoServer extends App {
remote.start("localhost", 1111)
remote.register("hello-service", actorOf[HelloWorldActor])
}

object RemoteEchoClient extends App {
val actor = remote.actorFor("hello-service", "localhost", 1111)
val reply = actor !! "Hello"
println(reply)
actor ! "Stop"
actor ! PoisonPill
}

/**
* a remote actor servers for message "Hello" and response with a message "World"
* it is silly
*/
class HelloWorldActor extends Actor {
def receive = {
case "Hello" =>
println("receiving a Hello message,and a World message will rply")
self.reply("World")
case "Stop" =>
println("stopping...")
remote.shutdown()
}
}

客户端发送一个PoisonPill 以及一个“停止”信号,但远程永远不会自行终止。我必须通过调用 remote.shutdown() 杀死对象 RemoteEchoServer 中的远程参与者。如何通过接收“停止”消息来关闭远程 actor?

我知道 exit() 可能会直接退出服务器应用程序,但如果还有请求需要处理怎么办。

关键是调用 remote.shutdown() 永远不会关闭远程服务(服务器应用程序),所以如果我想停止 Actor 的服务器应用程序,我该怎么办

最佳答案

Actor 可以通过调用 self.stop 杀死自己。所以忘记 PoisonPill,只使用 Stop 消息:

case "Stop" => {
println("stopping...")
self.stop
remote.shutdown()
}

关于scala - remote.shutdown() 不会杀死 akka 远程 actor 本身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6529650/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com