2015-10-13 11 views
6

Zajmuję się także ETL opartym na aplikacji internetowej (z silnikiem Kettle), używając Java.Zatrzymaj pracę Kettle Job/Transformation za pomocą Java

Występują problemy podczas próby zatrzymania uruchomionego zadania. Nie jestem pewien, czy użycie CarteSingleton.java jest poprawne. Używam niestandardowej mapy singleton.

Moje kodu jest jak poniżej

Job job = new Job(null, jobMeta); 
job.setLogLevel(LogLevel.DETAILED); 
job.setGatheringMetrics(true); 
job.start(); 

Po job.start() jest wywoływana, staram się zachować ten przedmiot pracy w mapie zwyczaj singleton i odzyskać dokładną obiektu zadania, który został zapisany w mapie oraz przy wywoływaniu metody stopAll() (zobacz poniższy kod) z innym wywołaniem REST, gdy status zadania to RUNNING, aby go zatrzymać. Ale to nie zatrzymuje pracy. Kettle Engine nie otrzymuje powiadomienia o tym! Job Execution trwa. Plik .kjb/.ktr tworzył przy użyciu SPOON, chociaż nie używam SPOON do uruchamiania/zatrzymywania wykonywania.

Czy istnieje czajnik API config mam zmienić, aby móc korzystać z

same job object 
    job.stopAll(); 

mógłbyś oświecić na API i próbki przykład, jeśli w ogóle, aby zatrzymać pracę bieganie lub transformacji przy użyciu Java ?

Wszelkie wskazówki i pomoc tutaj byłyby świetne! Dzięki jeszcze raz.

Pozdrawiam, Sanjeev

Odpowiedz

5

Twoje podejście wydaje się być poprawne. Należy jednak pamiętać, że natychmiastowe zatrzymanie nie może być zagwarantowane - po prostu ustawia flagę wskazującą, że wykonanie nie powinno być kontynuowane.

Job.stopAll() sets the flag i jest checked before the execution starts, ale jeśli to zaczęło to nie zatrzyma go na miejscu

Trans.stopAll() zachowuje się podobnie. It asks each step to stop i tej flagi is checked inside kroki.

+0

Dzięki. Ale jakie jest podejście, aby to zagwarantować? Czy Pentaho dostarcza jakąś próbkę? Zamieszczałem też na ich stronie - ale nie znalazłem jeszcze odpowiedzi. stackoverflow jest znacznie bardziej przyjazny dla programistów! –

+1

W rzeczywistości, przypuszczam, że wszelkie gwarancje są prawie niemożliwe. W Javie nie ma _legal_ metody ręcznego zatrzymywania wątków. Ponieważ 'Job' wywodzi się z kroków 'Thread' i transformacji', normalnie wykonywane są w osobnych wątkach, nie ma sposobu, aby natychmiast je zatrzymać. –

Powiązane problemy