gpt4 book ai didi

talend - 如何在 Talend 中实现 tLoop?

转载 作者:行者123 更新时间:2023-12-02 20:12:22 25 4
gpt4 key购买 nike

我是 Talend 的新手,需要一个示例作业来实现 tLoop。如果失败,我想运行 10 次作业。我查看了文档,但我似乎无法弄清楚这一点。

最佳答案

这个答案有两个部分

  1. 使用 tJava 创建循环

  2. 重新连接失败的数据源连接 5 次(添加 tJavaFlex)

_______________________________________

第 1 节:使用 tJava 创建循环

-------------------------------------------- --------------

我只是写了一个 tJava 组件,然后迭代到 false。像这样

第 1 步:创建上下文变量

enter image description here

第 2 步:在 tJava (tJava1) 中编写一些 java 代码

// setting loop flag
context.continueLooping = true;
//log.info("Starting job...");

然后连接On Component Ok

enter image description here

第 3 步:创建 tLoop

在循环条件中放置你的上下文 context.continueLooping这在第一次迭代中应该是正确的。

enter image description here

然后迭代

enter image description here

到下一个tJava(tJava2)

if ( ((Integer)globalMap.get("tLoop_1_CURRENT_ITERATION")) == 1)
{
// code

}
else if(((Integer)globalMap.get("tLoop_1_CURRENT_ITERATION")) == 2)
{
// code

}
else if (((Integer)globalMap.get("tLoop_1_CURRENT_ITERATION")) == 3)
{
// code

}
else if (((Integer)globalMap.get("tLoop_1_CURRENT_ITERATION")) == 4)
{
// code

}
else if (((Integer)globalMap.get("tLoop_1_CURRENT_ITERATION")) == 5)
{
// code

context.continueLooping = false;
// log.info("DONE");
}

else
{
context.continueLooping = false;
// log.error("out of bounds...");

}

这个 tJava 为每次迭代运行不同的代码,直到达到 5我使用这个区域来计算东西并将值加载到其他上下文等等。

然后它运行嵌套部分 n 次,直到上下文值设置为 false。

enter image description here

_____________________________

第 2 部分:重试失败的连接

_____________________________

如果您需要重试数据库连接。

像这样在 tLoop1 和 tJava2 之间添加一个 tJavaFlex

enter image description here

并在3个部分添加如下代码开始:

// start part of your Java code
try{

主要内容:

// here is the main part of the component,
// a piece of code executed in the row
// loop
if ( ((Integer)globalMap.get("tLoop_1_CURRENT_ITERATION")) > 1)
{
Thread.sleep(10000);
}

结束:

// end of the component, outside/closing the loop
}catch (Exception e) {

if ( ((Integer)globalMap.get("tLoop_1_CURRENT_ITERATION")) > 5)
{
context.continueLooping = false;
}
else
{
System.out.println("Connection failed. Retrying...next");
}


}

并添加 On Component Ok tJava 成功时停止循环的代码 (tJava3)

context.continueLooping = false; 

关于talend - 如何在 Talend 中实现 tLoop?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53290472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com