如果 OnComponent OnSubjob

在 Talend 中有 2/3 选项将组件连接在一起。你应该始终尝试使用 OnSubjob 连接器。这节省了很多麻烦。你会从例子中看出原因。

混合连接类型时会发生什么/执行顺序是什么?

  1. 如果
  2. OnComponent
  3. OnSubjob

请记住,If 连接得到运行时评估,这意味着如果你使用 globalMap,那么请务必小心订单。

例如:

(Boolean)globalMap.get("failure") == true - >调用一个重置此失败标志的子工作。(Boolean)globalMap.get("failure") == false - >调用一个让主要作业继续的子作用,因为失败路径重置了该标志。

有什么区别?

If 和 Oncomponent 连接充当函数调用。这使得垃圾收集器将所有本地数据保存在内存中。这可能会导致内存泄漏

另一方面,OnSubjob 连接让子工作完成并返回,因此 GC 将释放一些内存。

除了记忆之外,你还需要记住一些事项。如果你有一个读取/写入文件的数据流,则应始终使用 OnSubjobOk,因为一旦作业完成,数据文件将被关闭。如果使用 onComponent,则可能会发生文件未保存,因此你开始使用 0 字节文件,并在作业完成后,你将看到包含内容的文件。这是合乎逻辑的,但很难弄明白。