根据存储在配置表中的元数据动态触发 Talend 作业

问题描述 投票:0回答:1

我们需要构建一个编排框架,允许基于概念上看起来像这样的元数据动态触发 Talend 作业:

职位名称 依赖性
工作1
工作2 工作1
工作3 工作1
工作4 工作2,工作3

对于上面的例子,我们需要先执行Job1。然后,在 Job1 完成后,Job2 和 Job3 需要并行启动。最后,当 Job2 和 Job3 都完成后,Job4 需要开始。

为了实现这个框架,我需要一种方法来动态触发 Talend 作业,基于我从配置中提取的作业名称。到目前为止,我想到了两种选择,但都不理想:

  1. tRunJob 组件带有 Use dynamic job 标志。这种方法的缺点是我们仍然需要在 Job 参数中列出子作业的超集,并且每次添加新的子作业时都需要更改主作业。对于我们的场景,这不会很好地扩展,因为我们需要编排 100 多个作业,并且正在寻找一种在不触及框架的情况下发布新作业的方法。
  2. Talend 编排 API。我在 API 文档中的“任务”下看到了很多方法,但我找不到可以触发任务的方法。我想我可以通过调用 API 来安排任务运行(例如,从当前时间开始一分钟)来解决这个问题,但这似乎不是触发任务的最干净的方法。

在考虑这两个选项时,我是否遗漏了什么?还有其他选择吗?

非常感谢任何反馈!

talend
1个回答
0
投票

我认为最好的选择是使用 metaservlet API,因为具有动态作业的 tRunJob 将要求您在每次添加新作业时更改作业。使用 Metaservlet API,您可以使用

getTaskIdByName
的组合来使用作业名称获取任务 ID,然后使用
runTask

启动它
© www.soinside.com 2019 - 2024. All rights reserved.