6

我也在使用 Java 开发基于 Web 应用程序的 ETL(使用 Kettle 引擎)。

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

我的代码如下

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

调用 job.start() 后,我将尝试将该作业对象存储在自定义单例映射中并检索存储在映射中的确切 Job 对象,并在调用 stopAll() (请参见下面的代码)时使用另一个 REST在 Job 的状态为 RUNNING 时调用以停止它。但这并不能停止正在运行的工作。Kettle Engine 没有收到这方面的通知!作业执行继续。.kjb / .ktr 是使用 SPOON 创建的,尽管我没有使用 SPOON 来运行/停止执行。

我是否需要更改任何 Kettle API 配置才能使用

   same job object
   job.stopAll();

您能否对 API 和示例示例进行说明,如果有的话可以停止使用 Java 运行的 JOB 或转换?

这里的任何指示或帮助都会很棒!再次感谢。

问候, 桑吉夫

4

1 回答 1

5

你的方法似乎是正确的。但是,请注意,不能保证立即停止 - 它只是设置一个标志,指示不应继续执行。

Job.stopAll()设置标志在执行开始前检查它,但如果它已经开始,它不会当场停止它

Trans.stopAll()行为相似。它要求每个步骤停止,并在步骤内检查该标志。

于 2015-10-13T07:09:23.033 回答