如何在Talend中实现tLoop?
我是Talend的新手,需要一个示例作业来实现如何在Talend中实现tLoop?,talend,Talend,我是Talend的新手,需要一个示例作业来实现tLoop。如果一个作业失败,我想运行10次。我已经看了文件,但我似乎没有弄明白这一点。这个答案有两个部分 使用tJava创建循环 将失败的连接重试到数据源5次(添加tJavaFlex) \uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 第1节:使用tJava创建循环 --------------------------------------- 我只
tLoop
。如果一个作业失败,我想运行10次。我已经看了文件,但我似乎没有弄明白这一点。这个答案有两个部分
步骤3:创建tLoop
在循环条件中放入上下文context。继续操作
在第一次迭代中应该是正确的
然后迭代
到下一个tJava(tJava2)
这个tJava为每次迭代运行不同的代码,直到达到5
我使用这个区域来计算内容,并将值加载到其他上下文中,等等
然后它运行嵌套部分n次,直到上下文值设置为false
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
第2节:重试失败的连接
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
如果需要重试数据库连接
在tLoop1和tJava2之间添加tJavaFlex,如下所示
并在3个部分中添加以下代码
开始:
主要内容:
完:
并将添加到组件Ok
tJava
上,使用代码停止成功循环(tJava3)
只需使用tLoop->tRunJob,退出条件基于tRunJob的错误/退出代码,这非常简单。这是可行的,但当我在tLoop和第二个tjava之间设置tMSSqlConnection时,它似乎不起作用。我试图做到的是,如果连接失败,请在作业失败之前重试10次。如果你在一个示例工作中有类似的内容,请发布。我在我的第一个答案中添加了第2部分:Adda(tJavaFlex)感谢上面的工作,它正在按预期工作。如果我的连接在重试10次后失败,我想通过tLogcather发送错误消息,说明是什么导致了连接问题。意味着密码过期等。。。我有一个父作业,它有一个tLogcather调用一个childjob,其中包括上面的作业。
// setting loop flag
context.continueLooping = true;
//log.info("Starting job...");
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...");
}
// 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");
}
}
context.continueLooping = false;