1

Java 8 で Akka 2.5.6 を使用しており、ActorSystem を終了する正しい方法を知りたいのですが、私のコードの機能の一部は、いくつかの XML ファイルを処理してそれらを検証することです。これを実現するために、3 つのアクターを作成しました: コントローラー、プロセッサーおよびバリデーター。コントローラーは、プロセスを開始し、ファイルごとに、およびその他の情報をプロセッサーに送信する役割を担います。次に、プロセッサーはファイルのデジタル署名を作成し、バリデーターに応答を送信します。バリデーターは最終的にステータスを検証し、OK メッセージをコントローラーに送信します。検証されたファイルの数をカウントし、それらを合計ファイルと比較します。ファイルの総数と検証済みファイルの総数が等しくなったら、terminate() メソッドを使用して ActorSystem を終了するように呼び出します。

終了方法は以下の通りです。

     private void endActors() 
      {         
     ActorSystem actorSystem = getContext().system();
     Future <Terminated> terminated = actorSystem.terminate();
      do {
           log.info ("Waiting to finish ...");
           try {
           Thread.sleep (30000L);
           } catch (InterruptedException ex) {
             log.error ("Error in Thread.");
           }
         } while (! ended.isCompleted ());
             log.info ("Actors finished processing.");
       }

未来は決して完全ではないので、ループは決して終わりません。これが正しい方法であるかどうかはわかりません。あなたが私を理解してくれ、私を助けたり、アドバイスをくれたりすることを願っています.

4

1 に答える 1