Ich entwickle auch eine Web-App-basierte ETL (mit Kettle-Engine), mit Java.Stop Kettle Job/Transformation mit Java
Ich habe Probleme, während ich versuche, einen laufenden Job zu stoppen. Ich bin mir nicht sicher, ob die CarteSingleton.java korrekt ist. Ich verwende eine benutzerdefinierte Singleton Map.
Mein Code ist wie unten
Job job = new Job(null, jobMeta);
job.setLogLevel(LogLevel.DETAILED);
job.setGatheringMetrics(true);
job.start();
Sobald job.start() aufgerufen wird, ich versuche, in einer benutzerdefinierten Singleton Karte, dass Job-Objekt zu speichern und das genaue Job-Objekt abzurufen, die in der Karte gespeichert wurden und beim Aufruf von stopAll() (siehe Code unten) mit einem anderen REST-Aufruf, während der Status des Jobs RUNNING lautet, um ihn zu stoppen. Aber das hält den laufenden Job nicht auf. Kettle Engine wird davon nicht benachrichtigt! Die Jobausführung wird fortgesetzt. Das .kjb/.ktr erstellt mit SPOON, obwohl ich SPOON nicht zum Ausführen/Stoppen der Ausführung verwende.
Gibt es ein Kettle API Config Ich habe, ändern zu können, auf dem API und Beispiel Beispiel verwenden
same job object
job.stopAll();
Könnten Sie bitte aufklären, wenn überhaupt einen laufenden JOB oder Transformation zu stoppen Java unter Verwendung von ?
Alle Hinweise oder Hilfe hier wäre super! Danke noch einmal.
Grüße, Sanjeev
Danke. Aber, was ist der Ansatz, um es zu garantieren? Bietet Pentaho eine Probe? Ich habe auch auf ihrer Seite gepostet - aber noch keine Antwort gefunden. stackoverflow ist viel entwicklerfreundlicher! –
Eigentlich sind mir irgendwelche Garantien kaum möglich. In Java gibt es keine _legal_ Möglichkeit, Threads manuell zu stoppen. Da 'Job' von' Thread' abgeleitet ist und Transformationen'Schritte normalerweise in separaten Threads ausgeführt werden, gibt es keine Möglichkeit, sie sofort zu stoppen. –