同步&异步
同步流程块
LiteFlow提供了同步流程块和异步流程块,配置起来非常简单
以下为同步流程块,表示a,b,c,d四个组件会挨个同步执行
<then value="a,b,c,d"/>
下面的方式和上面等价
<then value="a,b"/>
<then value="c,d"/>
异步流程块
以下为异步流程块,表示a,b,c,d四个组件会并行执行
<when value="a,b,c,d"/>
当然下面的方式也和上面等价
<when value="a,b"/>
<when value="c,d"/>
异步线程池
LiteFlow从2.5.0开始引入了异步流程块的线程池设定
你可以通过这样配置线程池大小以及等待队列
#异步线程池最大线程数
liteflow.when-max-workers=4
#异步线程池等待队列数
liteflow.when-queue-limit=100
异步并行组
如果有同学想并行执行a,b,等执行好了,再并行执行c,d,该怎么办呢?
从2.5.0版本开始,引入了group
的概念,你只需这么配置就行了
<when group="g1" value="a,b"/>
<when group="g2" value="c,d"/>
LiteFlow规定,2个不同组的when是按照配置的顺序执行的,相同组的when是完全并行的。如果不配,默认组是default
,所以不配置组默认就是在同一组内的
相同异步并行组之间的抛错
不配置group
或者配成一样的,那无论有多少个<when>
还是你一个<when>
里有配置了多个组件,都是等价的。都会并行执行。
那么有一个组件抛错,其他组件依旧会执行,整个链路不会中断。
不同异步并行组之间的抛错
如果2个并行组之间,有一组任一节点报错。不想执行下一个并行组怎么办,从2.5.0版本开始,引入了一个参数errorResume
,你可以这样配置
<when group="g1" errorResume="false" value="a,b"/>
<when group="g2" value="c,d"/>
上面的配置表示,如果g1并行组件a和b有一个执行报错,则第二个<when>
不会执行
如果设为true,或者不配置(不配置默认为true),如果并行组g1中任意一个节点抛出异常,则g2并行组,依旧执行