我也在使用 Java 开发基于 Web 应用程序的 ETL(使用 Kettle 引擎)。
我在尝试停止正在运行的作业时遇到了问题。我不确定使用 CarteSingleton.java 是否正确。我正在使用自定义单例地图。
我的代码如下
Job job = new Job(null, jobMeta);
job.setLogLevel(LogLevel.DETAILED);
job.setGatheringMetrics(true);
job.start();
调用 job.start() 后,我尝试将该作业对象存储在自定义单例映射中,并检索存储在映射中的确切作业对象,并使用另一个 REST 调用 stopAll() (参见下面的代码)当作业的状态为 RUNNING 时调用以停止它。
但这并不能阻止正在运行的作业。 Kettle Engine 没有收到此通知!作业执行继续。 .kjb / .ktr 是使用 SPOON 创建的,尽管我没有使用 SPOON 来运行/停止执行。
我是否需要更改任何 Kettle API 配置才能使用
same job object
job.stopAll();
您能否了解一下 API 和示例示例(如果有的话)可以使用 Java 停止正在运行的作业或转换?
这里的任何指示或帮助都会很棒!再次感谢。
问候,
桑吉耶夫
看来你的做法是正确的。但是,请注意,不能保证立即停止 - 它只是设置一个标志,指示不应继续执行。
Job.stopAll()设置标志 https://github.com/pentaho/pentaho-kettle/blob/master/engine/src/org/pentaho/di/job/Job.java#L1307它是执行开始前检查 https://github.com/pentaho/pentaho-kettle/blob/master/engine/src/org/pentaho/di/job/Job.java#L662,但如果已经开始,它不会当场停止
Trans.stopAll()
行为类似。它要求每一步停止 https://github.com/pentaho/pentaho-kettle/blob/master/engine/src/org/pentaho/di/trans/Trans.java#L1886-L1922还有那面旗帜里面被检查了 https://github.com/pentaho/pentaho-kettle/blob/master/engine/src/org/pentaho/di/trans/step/BaseStep.java steps.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)