SHO酱的Blog

SHO酱的Blog

Kettle 有限重试机制实现

2024-05-09
Kettle 有限重试机制实现

废话

在使用 Kettle 进行输入同步时,偶尔会因为数据来源数据库莫名的原因导致数据同步失败;所以需要使用重试机制来实现当执行失败后进行反复任务功能。但又不能无限次重复;所以就需要通过变量累加记录失败次数,在到达上限后还是要结束同步任务。

流程说明

kettle_err_retry_0.png

  1. 设置循环变量为 0;
  2. 执行过程,当执行成功后正常结束;
  3. 当执行失败后,循环变量+1;
  4. 判断循环变量是否到达最大,到最大以失败结束,此时可以做失败的业务处理;
  5. 未到达最大重试次数,进入等待;
  6. 等待后重新进入执行过程,到第2步。

详细说明

设置循环变量为 0

这里要注意变量的适用范围和变量名称。

节点位置:Ganeral -> Set variables

kettle_err_retry_1.png

循环变量+1

这里的“循环变量+1”是适用 JavaScript 脚本进行设置的。

行1:取出变量
行2:累加并设置变量
行3:设置返回 true

节点位置:Scripting -> JavaScript

kettle_err_retry_2.png

var i=new Number(parent_job.getVariable("err_times_84"));
parent_job.setVariable("err_times_84", ++i);
true;

判断循环变量是否到达最大

图中最下方的“5”为循环最大次数。

节点位置:Conditions -> Simple evaluation

kettle_err_retry_3.png

等待

这里只等待了1秒,可以根据实际业务需要进行修改。

节点位置:Conditions -> Wait for

kettle_err_retry_4.png

参考

1、kettle知识点系列之kettle的循环模式_kettle 循环-CSDN博客