【问题标题】:Stop running Kettle Job/Transformation using Java停止使用 Java 运行 Kettle Job/Transformation
【发布时间】:2016-01-10 18:27:08
【问题描述】:

我也在使用 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() 时(参见下面的代码)在 Job 的状态为 RUNNING 时使用另一个 REST 调用来停止它。 但这并不能停止正在运行的工作。 Kettle Engine 没有收到这方面的通知!作业执行继续。 .kjb / .ktr 是使用 SPOON 创建的,尽管我没有使用 SPOON 来运行/停止执行。

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

   same job object
   job.stopAll();

能否请您解释一下 API 和示例示例,如果有的话可以停止正在运行的 JOB 或使用 Java 进行的转换?

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

问候, 桑吉夫

【问题讨论】:

    标签: java pentaho etl kettle pentaho-design-studio


    【解决方案1】:

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

    Job.stopAll() sets the flagchecked before the execution starts,但如果已经开始了,也不会当场制止

    Trans.stopAll() 的行为类似。 It asks each step to stop 和那个标志 is checked inside 步骤。

    【讨论】:

    • 谢谢。但是,保证它的方法是什么? Pentaho 是否提供任何样品?我也在他们的网站上发布了 - 但还没有发现任何回应。 stackoverflow 对开发人员更加友好!
    • 实际上,我想几乎不可能有任何保证。在 Java 中,没有手动停止线程的合法方法。由于Job 派生自Thread,并且转换的步骤通常在单独的线程中执行,因此也无法立即停止它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多