🗄Etcd配置源
版本支持:v2.9.0+
LiteFlow原生支持了Etcd的规则配置源。
# 依赖
如果使用Etcd作为规则配置源,你需要添加以下额外插件依赖:
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-rule-etcd</artifactId>
<version>2.12.3</version>
</dependency>
# 配置
依赖了插件包之后,你无需再配置liteflow.ruleSource
路径。
只需要配置插件的额外参数即可:
liteflow:
rule-source-ext-data-map:
endpoints: http://127.0.0.1:2379
chainPath: /liteflow/chain
scriptPath: /liteflow/script
liteflow.rule-source-ext-data={\
"endpoints":"http://127.0.0.1:2379",\
"chainPath":"/liteflow/chain",\
"scriptPath":"/liteflow/script"\
}
// Make sure to add code blocks to your code group
# 配置说明
配置项 | 说明 |
---|---|
endpoints | etcd的连接串 |
chainPath | 你的规则目录节点(下面会有很多个规则,一个规则一个节点) |
scriptPath | 你的脚本目录节点(下面会有很多个脚本,一个脚本一个节点) |
# 存储数据说明
在Etcd中,假设你的chainPath
为:/liteflow/chain
那么这个路径下的每一个节点就是一个规则,节点的key的格式为:规则ID[:是否启用]
,其中方括号内的为可选项,value为单纯的EL(THEN(a,b,c)
),比如:
/liteflow/chain
---chain1
---chain2
对于脚本path来说,假设你的scriptPath
为:/liteflow/script
那么这个路径下的每一个节点都是一个脚本组件,节点的key有固定格式:脚本组件ID:脚本类型[:脚本名称:脚本语言:是否启用]
,其中方括号内的为可选项。 value为脚本数据,比如:
/liteflow/script
---s1:script:脚本组件s1
---s2:boolean_script:布尔脚本组件s2
关于脚本类型,可以参照脚本语言介绍这一章节。
# 自动刷新
使用了此Etcd配置源插件,凡是Etcd节点里面的规则改动,会自动推送到业务系统,进行实时的平滑热刷新。你无需做任何事情。
# 脚本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
那将会报错。
# 小例子
为了让大家能简单上手Etcd规则文件的配置和运行,这里有一个小demo,大家可以拉到本地来运行,需要你替换Etcd的配置信息。
运行项目前,先读项目里的readme.txt
文件。
https://github.com/bryan31/liteflow-ext-rule-demo