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。如何通過收到「停止」消息來關閉遠程角色?remote.shutdown()不殺的阿卡遠程演員本身
我知道exit()可能會直接退出服務器應用程序,但如果仍有請求需要處理,該怎麼辦?
關鍵的一點是調用remote.shutdown()永遠不會關閉遠程服務(服務器應用程序),所以我應該怎麼做,如果我想停止服務器應用程序的演員
我想知道爲什麼這被投票關閉? – fresskoma
爲什麼要關閉整個遠程服務只關閉一個演員? –
而且你不能發送PoisonPill_after_停止消息,因爲當你發送PoisonPill(它將由遠程發送)時,你不能確定遠程處理仍在工作 –