使用Java停止运行Kettle作业/转换

7

我正在使用Java开发基于Kettle引擎的Web应用程序ETL工具。

我在尝试停止运行中的作业时遇到了问题。我不确定是否正确使用CarteSingleton.java。我正在使用自定义的单例映射。

我的代码如下:

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

一旦执行 job.start() 后,我试图将该 job 对象存储在自定义的单例映射中,并在 stopAll() 的调用中检索在映射中存储的确切 Job 对象。但是,在 Job 的状态为 RUNNING 时停止,不会停止正在运行的作业。Kettle 引擎没有收到通知!任务继续执行。.kjb / .ktr 是使用 SPOON 创建的,尽管我没有使用 SPOON 来运行/停止执行。是否有任何 Kettle API 配置需要更改,以便能够使用?
   same job object
   job.stopAll();

您好,能否请您提供使用Java停止正在运行的作业或转换的API和示例?

非常感谢您在这方面给予任何指导或帮助!再次感谢。

祝好, Sanjeev

1个回答

6

谢谢。但是,保证的方法是什么? Pentaho提供任何示例吗? 我也在他们的网站上发布了 - 但尚未收到回复。 stackoverflow更加开发者友好! - Sanjeev Kulkarni N
1
实际上,我认为任何保证都很难做到。在Java中,没有合法的方法可以手动停止线程。由于Job是从Thread派生而来,转换步骤通常在单独的线程中执行,因此也没有立即停止它们的方法。 - Andrey Khayrutdinov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接