组件重试
LiteFLow从v2.6.0起开始支持组件的重试
其中又分全局重试和单个组件重试,下面一一说明
全局重试
如果需要全局重试,你需要做如下配置:
liteflow.retry-count=3
这表明,如果组件抛出任何异常,会重试3次,如果3次之后依旧异常,那么整条流程结束。
以下几种情况流程会继续:
如果组件里覆盖了isContinueOnError
,设为true的话,那流程会继续。
异步流程的话,如果<when>
上配置了errorResume="true"
的话(默认就是true),则下一个不同并行组会继续。关于errorResume
的定义和使用,可以查看同步&异步章节
单个组件重试
LiteFlow还提供了基于单个组件,指定Exception的重试特性,LiteFlow从2.6.0开始提供了@LiteflowRetry
标注
你可以在指定的组件上进行标注:
@LiteflowComponent("c")
@LiteflowRetry(5)
public class CCmp extends NodeComponent {
@Override
public void process() {
//do your biz
}
}
那么,这样就表明,如果这个组件有任何异常抛出,则最多重试5遍。如果第5遍重试再不成功,那就会真正抛出你的业务异常
同样,还可以在这个标注上指定一个或者多个异常:
@LiteflowComponent("e")
@LiteflowRetry(retry = 5, forExceptions = {NullPointerException.class,IllegalArgumentException})
public class ECmp extends NodeComponent {
@Override
public void process() {
//do your biz
}
}
这样就表明,如果这个组件抛出的异常是NullPointerException
或者IllegalArgumentException
(或者是这两个Exception类的子类),则会进行最多5次的尝试,最后一遍再不成功,那就会真正抛出异常。
全局重试和单个组件重试都定义的情况下
如果在2者都定义的情况下,优先取单个组件的重试配置。没有的情况下,再取全局配置。