2012-06-19 37 views
0

我有使用Java API編寫的客戶端服務器程序。我試圖向服務器發送一條消息,然後服務器會向Client發送一些回覆消息。然後Client向服務器發送一個poisonPill。如果服務器收到poisonpill消息,它必須關閉。下面的代碼片段相同。 在ClientActor:發送從客戶端poisonpill到服務器在阿卡

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線不執行,從而使服務器始終運行。

任何人都可以幫助我嗎?爲什麼這條線路根本沒有執行?

+0

該行不執行是,如果消息始終是一個字符串的唯一途徑。嘗試調試或記錄。 – Thilo

+0

如果該消息始終是字符串,然後反正是有檢查從客戶端poisonpill? – user1442237

+0

您remoteActor被調用poisonPill()方法。它會返回一個PoisonPill對象嗎? –

回答

1

它不應該是

remoteActor.tell(new PoisonPill()); 
+0

remoteActor.tell(new PoisonPill());不working..giving編譯錯誤 – user1442237

+0

不,這是PoisonPill.getInstance() –

+0

PoisonPill.getInstance()也拋出編譯錯誤 – user1442237

3

PoisonPill由阿卡自動處理。您不應該在Actor中終止ActorSystem。它相當於在Business Object中調用System.exit(0)。 如果你想停止ServerActor,做到:context.stop(個體經營)

相關問題