📜Apollo配置源
版本支持:v2.9.5+
LiteFlow原生支持了Apollo配置中心。你可以在配置中心里配置你的链路和脚本。
# 依赖
如果使用Apollo作为规则配置源,你需要添加以下额外插件依赖:
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-rule-apollo</artifactId>
<version>2.12.3</version>
</dependency>
# 配置
依赖了插件包之后,你无需再配置liteflow.ruleSource
路径。
只需要配置插件的额外参数即可:
liteflow:
rule-source-ext-data-map:
chainNamespace: chainConfig
scriptNamespace: scriptConfig
liteflow.rule-source-ext-data={\
"chainNamespace":"chainConfig",\
"scriptNamespace":"scriptConfig"\
}
// Make sure to add code blocks to your code group
# 配置说明
配置项 | 说明 |
---|---|
chainNamespace | 规则命名空间名称 |
scriptNamespace | 脚本命名空间名称 |
# 存储数据说明
提示
由于在Apollo中,推荐的做法是把连接信息和环境信息放到服务器的appdatas
下的server.properties
文件中的。所以在LiteFlow的配置文件中是不指定连接信息的。这点要注意下。
对于规则来说,你在Apollo中需要为规则单独创建一个Namespace
,数据类型选择properties
,那么这个Namespace
下的每一对kv都是一个规则
key的格式为:规则ID[:是否启用]
,其中方括号内的为可选项,value为单纯的EL(THEN(a,b,c)
)
假设你的规则命名空间为:chainConfig
,那么配置形式样例如下:
Namespace:chainConfig | |
---|---|
chain1 | THEN(a, b, c); |
chain2 | IF(x, b).ELIF(y, c).ELSE(d); |
对于脚本命名空间来说,节点的key有固定格式:脚本组件ID:脚本类型[:脚本名称:脚本语言:是否启用]
,其中方括号内的为可选项。 value为脚本数据。
假设你的脚本命名空间为:scriptConfig
,那么配置形式样例如下:
Namespace:scriptConfig | |
---|---|
s1:script:脚本组件1 | defaultContext.setData("s1","hello") |
s2:boolean_script:脚本组件2 | if(a > 100){return true;}else{return false;} |
# 自动刷新
Apollo支持推送配置数据的变更,凡是在Apollo里的规则和脚本变动,会自动推送到业务系统,进行实时的平滑热刷新,你无需做任何事情。
# 脚本key的语言配置
如果你只依赖了一种脚本语言插件包,那么语言这项是不需要配置的。会自动识别的。如果你配置了多语言脚本,那么脚本语言
这一项,是必须要写的。
比如s1:boolean_script:布尔脚本s1:js
。
关于脚本的多语言共存,请参考多脚本语言混合共存这一章。
# 规则的启用关闭和脚本启用关闭v2.12.0+
LiteFlow也支持在Etcd节点上保留数据的同时关闭和启动规则/脚本。
之前说到规则的key的固定格式为规则ID[:是否启用]
,如果配置chain1:false
,那么这个规则就是关闭状态。相当于逻辑删除。
当然如果你只是配置key为chain1
,那么等价于chain1:true
。
对于脚本key来说,固定格式为脚本组件ID:脚本类型[:脚本名称:脚本语言:是否启用]
,如果配置s1:script:脚本s1:groovy:false
,那么这个脚本就是关闭状态,相当于逻辑删除。
如果不配置最后一项,比如s1:script:脚本s1:groovy
,那么等价于s1:script:脚本s1:groovy:true
。
提示
对于规则key或者脚本key来说,一定要以冒号为分隔符对应好位置,如果你想配置是否启动,那么是在第5项,前面4项就必须要写,如果你写成s1:script:脚本s1:false
那将会报错。