提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
提示:以下是本篇文章正文内容,下面案例可供参考
一、retry
retry作为liteflow提供的高级特性之一,可以在node执行失败时,进行重试。
二、使用方法
1、通过标签配置
<liteflow>
<node id="task1" name="Task 1">
<!-- Task 1 configuration -->
<retry maxRetryCount="3" retryInterval="5000"/>
</node>
</liteflow>
我自己试过了,重试的配置不能加载到task1这个node节点的属性里,最终没能重试
2、通过重写set方法
@LiteflowComponent
public class NodeA extends NodeComponent {
@Override
public void process() {
System.out.println("NodeA executed");
System.out.println(this.getRetryCount());
throw new RuntimeException("测试异常");
}
@Override
public void setRetryCount(int retryCount) {
super.setRetryCount(3);
}
}
这种方式可以实现重试,单测结果如下:
2024-02-22 10:21:53.279|INFO|main|127.0.0.1|014ad6064252452d897c4885e10f520d|1.0|com.yomahub.liteflow.flow.element.Node.execute[127]|[2fbb2ca588a543e78012c397a6d55b92]:[O]start component[nodeA] execution
NodeA executed
3
2024-02-22 10:21:53.286|INFO|main|127.0.0.1|014ad6064252452d897c4885e10f520d|1.0|com.yomahub.liteflow.flow.executor.DefaultNodeExecutor.retry[61]|[2fbb2ca588a543e78012c397a6d55b92]:component[nodeA] performs 2 retry
NodeA executed
3
2024-02-22 10:21:53.287|INFO|main|127.0.0.1|014ad6064252452d897c4885e10f520d|1.0|com.yomahub.liteflow.flow.executor.DefaultNodeExecutor.retry[61]|[2fbb2ca588a543e78012c397a6d55b92]:component[nodeA] performs 3 retry
NodeA executed
3
2024-02-22 10:21:53.287|INFO|main|127.0.0.1|014ad6064252452d897c4885e10f520d|1.0|com.yomahub.liteflow.flow.executor.DefaultNodeExecutor.retry[61]|[2fbb2ca588a543e78012c397a6d55b92]:component[nodeA] performs 4 retry
NodeA executed
3
3、通过注解的方式
@LiteflowComponent
@LiteflowRetry(5)
public class NodeA extends NodeComponent {
@Override
public void process() {
System.out.println("NodeA executed");
System.out.println(this.getRetryCount());
throw new RuntimeException("测试异常");
}
}
通过第二种、第三种方式,我们能确定,最终重试依赖于属性:retryCount,这两种都可以实现重试,官方给出的文档中,推荐的也是第三种注解的方式
总结
一天进步一点点!