首页 > 解决方案 > Talend ETL - 在 tLoop 中运行子作业

问题描述

我正在尝试在 tLoop 中运行子作业。子作业连接到 salesforce 并将“帐户”对象下载到本地 SQL Server 表。与 Salesforce 的连接存在问题,只需几次尝试即可连接。因此,我将连接内容放在子作业中,现在尝试循环调用子作业。下面是我父母工作的图片。

在此处输入图像描述

正如您在图像中看到的那样,tRunJob_1 由于子作业中的 Salesforce 连接问题而出现错误。这是正确的行为。

连接到 OnComponentError 的 setRetryConnect 具有以下代码:context.retryConnect = true;

连接到 OnComponentOk 的 setRetryConnect 具有以下代码:context.retryConnect = false;

因此,我根据子作业是成功还是失败来触发这个上下文变量。

我的 tLoop 如下所示:

在此处输入图像描述

我希望 tLoop 运行多次,直到条件保持为真。直到它继续出错。但是,它只迭代一次然后停止。谁能让我知道需要在这里进行哪些更正才能使 tLoop 正常工作?

标签: talend

解决方案


自己找到了答案,将其发布在这里,以便对其他人有所帮助。看起来 OnComponentError 打破了 tLoop。禁用 OnComponentError 流程并取消选中 tRunJob 中的“Die on Child Error”复选框。

父母工作

tRunJob

tLoop 保持原样。这里没有变化。

tLoop

retryConnect 将使用以下代码。它使用 CHILD_RETURN_CODE 来检查子作业是否抛出错误。如果成功,它的值为 0。当子作业成功时,我正在触发变量,因此循环将停止。如您所见,tLoop 显示了 2 次迭代,它现在按预期工作。谢谢。

重试连接


推荐阅读