如果 OnComponent OnSubjob
在 Talend 中有 2/3 選項將元件連線在一起。你應該始終嘗試使用 OnSubjob 聯結器。這節省了很多麻煩。你會從例子中看出原因。
混合連線型別時會發生什麼/執行順序是什麼?
- 如果
- OnComponent
- OnSubjob
請記住,If 連線得到執行時評估,這意味著如果你使用 globalMap,那麼請務必小心訂單。
例如:
(Boolean)globalMap.get("failure") == true
- >呼叫一個重置此失敗標誌的子工作。(Boolean)globalMap.get("failure") == false
- >呼叫一個讓主要作業繼續的子作用,因為失敗路徑重置了該標誌。
有什麼區別?
If 和 Oncomponent 連線充當函式呼叫。這使得垃圾收集器將所有本地資料儲存在記憶體中。這可能會導致記憶體洩漏。
另一方面,OnSubjob 連線讓子工作完成並返回,因此 GC 將釋放一些記憶體。
除了記憶之外,你還需要記住一些事項。如果你有一個讀取/寫入檔案的資料流,則應始終使用 OnSubjobOk,因為一旦作業完成,資料檔案將被關閉。如果使用 onComponent,則可能會發生檔案未儲存,因此你開始使用 0 位元組檔案,並在作業完成後,你將看到包含內容的檔案。這是合乎邏輯的,但很難弄明白。