2015-09-13 138 views
0

我正在發送一個演員的消息來殺死另一個演員。接收者actor執行context.system.shutdown。儘管actor完全接收消息並執行case語句中指定的代碼,但它不會關閉。出了什麼問題?斯卡拉system.shutdown不工作

接收方actor的接收方法。

def receive = { 
    ... 

    case "KILL" => context.system.shutdown 
} 

回答

0
case "KILL" => context.system.shutdown() 

應該關閉整個系統的演員。用你給出的代碼我不明白爲什麼它不會。正如你用遠程演員標記了你的問題,我可以想象你可能有一些邏輯來重新啓動遠程參與者系統失敗。

然而,只殺死一個演員,你不會關閉整個系統,而是停止一個演員:

case "KILL" => context.stop(self) 
+0

其實有一些是演員在系統保持運行的同時system.shutdown()是執行。所以它會強制停止正在運行的演員或等待他們先停止處理。 – serpent403