Im mit Akka 2.5.6 in Java 8 und ich möchte den richtigen Weg zu Ende ActorSystem wissen, Teil der Funktionalität meines Codes ist es, einige XML-Dateien zu verarbeiten und zu validieren, zu erreichen Ich habe 3 Schauspieler erstellt: Controller, Prozessor und Validator. Der Controller ist dafür verantwortlich, den Prozess einzuleiten und Datei für Datei und andere Informationen an den Prozessor zu senden, dann erstellt der Prozessor eine digitale Signatur der Datei und sendet die Antwort an den Validator, der schließlich den Status validiert und eine OK - Nachricht an den Controller, der die Anzahl der validierten Dateien zählt und sie mit den gesamten Dateien vergleicht. Sobald die Gesamtzahl der Dateien mit den insgesamt validierten Dateien gleich ist, rufe ich auf, um das ActorSystem mit der Methode terminate() zu beenden.Akka ActorSystem nie in Java beenden
Das Verfahren ist bis zum Ende wie folgt:
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.");
}
Die Schleife endet nie, weil die Zukunft nie abgeschlossen ist, ich weiß nicht, ob dies der richtige Weg ist, ich hoffe, Sie haben mich verstanden und kann mir helfen oder gib mir einen Rat.
Ich habe versucht, das zu tun, aber es funktioniert nicht, am Ende bekomme ich eine Ausnahme vom Typ InterruptedException oder Timeout, weil es das Timeout überschreitet, ich verstehe nicht, Was ist das Problem. Ich habe auch die Versionen von akka und Abhängigkeiten geändert, jetzt benutze ich diese Bibliotheken: akka-actor_2.12-2.4.17, config-1.3.0 und scala-library-2.12.1. –