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 , а также сигнал "Стоп", но пульт никогда не завершает свою работу.
Я должен убить удаленного субъекта в объекте RemoteEchoServer, вызвав remote.shutdown (). Как отключить удаленного участника, получив сообщение «Стоп»?
Я знаю, что exit (), вероятно, выйдет из серверного приложения напрямую, но что, если все еще есть запрос, необходимо обработать.
Ключевым моментом является вызов remote.shutdown (), который никогда не завершает работу удаленной службы (серверного приложения), поэтому что мне делать, если я хочу остановить серверное приложение для субъекта