0

Java API を使用して記述されたクライアント サーバー プログラムがあります。サーバーにメッセージを送信しようとすると、サーバーがクライアントに応答メッセージを送信します。次に、クライアントがpoisonPillをサーバーに送信します。サーバーがポイズンピル メッセージを受信した場合、シャットダウンする必要があります。以下のコード スニペントは同じです。ClientActor では:

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回線は実行されていないため、サーバーは常に実行されています。

誰でもこれについて私を助けることができますか? なぜ行がまったく実行されないのですか?

4

2 に答える 2

3

PoisonPill は Akka によって自動的に処理されます。アクター内から ActorSystem を終了しないでください。これは、ビジネス オブジェクト内で System.exit(0) を呼び出すのと同じです。ServerActor を停止する場合は、context.stop(self) を実行します。

于 2012-06-19T19:18:48.013 に答える
1

あるべきではない

remoteActor.tell(new PoisonPill());
于 2012-06-19T12:26:41.400 に答える