10.1 同步&异步

同步流程块

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,所以不配置组默认就是在同一组内的

不同并行组之间的抛错

如果2个并行组之间,有一组任一节点报错。不想执行下一个并行组怎么办,从2.5.0版本开始,引入了一个参数errorResume,你可以这样配置

<when group="g1" errorResume="false" value="a,b"/>
<when group="g2" value="c,d"/>

上面的配置表示,如果g1并行组件a和b有一个执行报错,则g2不会执行

如果设为true,或者不配置(不配置默认为true),如果并行组g1中任意一个节点抛出异常,则g2并行组,依旧执行

Last updated on