🍢配置项参考
版本支持:v2.16.1+
所有Rule-DB配置都在liteflow.rule-db.*命名空间下,绑定到com.yomahub.liteflow.property.RuleDbConfig。
配置是嵌套结构的:
- 通用项在
liteflow.rule-db.* - 缓存项在
liteflow.rule-db.cache.* - 同步项在
liteflow.rule-db.sync.* - 各后端的专属项分别在
.sql.*、.postgresql.*、.mongodb.*、.redis.*、.zk.*、.etcd.*、.nacos.*下
先分清两类配置
连接(也就是各后端的专属项)管的是插件用哪个客户端或连接池访问存储。默认复用容器里的bean,只有存在多个同类bean时才需要用*-bean-name指名。
隔离名(application-name)管的是规则记在存储的哪个命名空间下,它不参与任何连接查找。
绝大多数应用这两类都不用显式配:连接按类型自动找,隔离名回落到spring.application.name。
# 通用配置(七个后端共用)
| 配置项 | 默认 | 说明 |
|---|---|---|
liteflow.rule-db.enabled | true | 引入依赖就激活了。这是个逃生开关,设成false则退回非Rule-DB的行为。 |
liteflow.rule-db.application-name | 自动取spring.application.name | 多应用共库时的隔离维度,会写进存储的application_name字段或者键前缀,同一套存储里不同取值的规则互相看不到。它只管隔离,和用哪个连接bean无关。两个Spring Boot starter在这项为空时会回落到spring.application.name,Solon插件和非Spring环境没有这个回落,请显式配置。都没有值时回落成default。多应用共库时请确保各应用取值不同,否则会互相读写对方的规则。另外发布侧的applicationName(...)必须和执行侧解析出来的结果一致。 |
liteflow.rule-db.cache.capacity | 500 | Caffeine有界缓存的容量,按chain条数计。超出后按访问热度淘汰,被淘汰的chain退回影子状态,它引用的脚本引用计数减一。 |
liteflow.rule-db.cache.preload-chain-ids | 空 | 启动时预热的chain id列表,逗号分隔。关键链路建议列在这里,可以抹平冷启动时首次回源的尖刺。预热失败只记一条warn,不会阻断启动。 |
liteflow.rule-db.sync.poll-seconds | 3 | 变更序号的轮询周期,对SQL、PostgreSQL、MongoDB、Redis生效。zk、etcd、Nacos走监听,这项对它们不生效。 |
liteflow.rule-db.sync.reconcile-seconds | 60 | 清单对账周期,会全量diff索引和缓存。通知和轮询都丢了的极端情况下,这个周期是收敛的最终保证。 |
liteflow.rule-db.sync.fetch-retry-times | 3 | 回源拉取失败时的重试次数。 |
# SQL 专属配置
| 配置项 | 默认 | 说明 |
|---|---|---|
liteflow.rule-db.sql.datasource-bean-name | 自动查找 | 推荐用这个。指定复用容器里的哪个DataSource。只有一个DataSource时可以省略,插件会按类型自动查找。多数据源的项目请显式配置,因为不配的话,有@Primary就会用主数据源,没有则按类型查找失败。 |
liteflow.rule-db.sql.url | — | JDBC url,不推荐用。配了它就走DriverManager裸连接,没有池化,而且插件不再查找容器里的DataSource,两者互斥。只适合临时验证。 |
liteflow.rule-db.sql.username | — | 配合url使用。 |
liteflow.rule-db.sql.password | — | 配合url使用。 |
liteflow.rule-db.sql.driver-class-name | 从url自动推断 | 留空即可。 |
liteflow.rule-db.sql.table-prefix | lf_ | 表名前缀,可以改,只允许ASCII字母、数字和下划线,最长54个字符。字段名是固定的,不可配。 |
liteflow.rule-db.sql.auto-init-table | false | 设成true则启动时执行CREATE TABLE IF NOT EXISTS。 |
liteflow.rule-db.sql.change-log-batch-size | 1000 | 每次轮询最多读取多少条变更日志。有积压时会按批次连续排空,避免一次把全部历史记录载入内存。必须大于0。 |
# PostgreSQL 专属配置
| 配置项 | 默认 | 说明 |
|---|---|---|
liteflow.rule-db.postgresql.datasource-bean-name | 自动查找 | 推荐用这个。指定复用容器里的哪个DataSource,只有一个时可以省略。多数据源的项目和SQL一样,请显式配置。 |
liteflow.rule-db.postgresql.url | — | PostgreSQL的JDBC URL,不推荐用。走DriverManager裸连接,没有池化,而且和容器DataSource查找互斥。 |
liteflow.rule-db.postgresql.username / .password | — | JDBC认证信息,配合url使用。 |
liteflow.rule-db.postgresql.driver-class-name | org.postgresql.Driver | 通常不用配。 |
liteflow.rule-db.postgresql.table-prefix | lf_ | 表名前缀,只允许ASCII字母、数字和下划线,最长52个字符。 |
liteflow.rule-db.postgresql.auto-init-table | false | 是否执行模块内置的PostgreSQL DDL。 |
liteflow.rule-db.postgresql.change-log-batch-size | 1000 | 单批变更日志的上限。 |
# MongoDB 专属配置
| 配置项 | 默认 | 说明 |
|---|---|---|
liteflow.rule-db.mongodb.uri | — | MongoDB URI,不配则自动查找容器里的MongoClient。注意必须连接副本集或者分片集群。 |
liteflow.rule-db.mongodb.database | liteflow | 数据库名。 |
liteflow.rule-db.mongodb.collection-prefix | lf_ | Collection前缀。 |
liteflow.rule-db.mongodb.mongo-client-bean-name | 自动查找 | 有多个MongoClient时用它指定。 |
liteflow.rule-db.mongodb.change-log-batch-size | 1000 | 单批变更日志文档的上限。 |
# Redis 专属配置
| 配置项 | 默认 | 说明 |
|---|---|---|
liteflow.rule-db.redis.address | — | 单机、哨兵、集群统一从这里配,多地址逗号分隔,比如redis://h1:6379,redis://h2:6379。 |
liteflow.rule-db.redis.master-name | — | 配了它就是哨兵模式,不配则按地址数量自动推断是单机还是集群。 |
liteflow.rule-db.redis.username | — | Redis 6以上的ACL用户名,可空,单机、哨兵、集群都生效。 |
liteflow.rule-db.redis.password | — | Redis口令,可空。 |
liteflow.rule-db.redis.database | 0 | Redis逻辑库。 |
liteflow.rule-db.redis.key-prefix | lf | 键前缀,规则会落在{prefix}:{app}:...下。 |
liteflow.rule-db.redis.key-hash-tag | — | Redis Cluster的hash-tag,不含花括号。配了之后所有键落在{prefix}:{hashTag}:{app}:...下,固定到同一个slot,这样Lua多键原子发布才能工作。cluster模式下必填,不配会在建连时抛ConfigErrorException;单机和哨兵可以不配。 |
liteflow.rule-db.redis.redisson-bean-name | 自动查找 | 容器里有RedissonClient时复用它,不用再配address,鉴权也在那个bean上配。 |
# ZooKeeper 专属配置
| 配置项 | 默认 | 说明 |
|---|---|---|
liteflow.rule-db.zk.connect-string | — | zk集群地址,多地址逗号分隔。 |
liteflow.rule-db.zk.root-path | /liteflow | 根路径,所有规则节点挂在{root}/{app}/...下。 |
liteflow.rule-db.zk.session-timeout | 60000 | 会话超时,单位毫秒。 |
liteflow.rule-db.zk.username | — | digest认证用户名,可空。配了之后,模块创建的所有znode都使用CREATOR_ALL_ACL。它和password必须成对配置,且用户名里不能有:,否则启动时抛ConfigErrorException。 |
liteflow.rule-db.zk.password | — | digest认证口令,和username成对配置。 |
liteflow.rule-db.zk.curator-bean-name | — | 要复用的CuratorFramework bean名。zk后端不做按类型的自动查找,想复用就必须配这一项。配了之后connect-string、session-timeout、username、password都不再生效。bean不存在时启动抛ConfigErrorException。 |
# Etcd 专属配置
| 配置项 | 默认 | 说明 |
|---|---|---|
liteflow.rule-db.etcd.endpoints | — | etcd的endpoint列表,逗号分隔,必须带http://或https://,两种scheme不能混用。格式非法或者为空时启动抛ConfigErrorException。 |
liteflow.rule-db.etcd.root-path | /liteflow | 根路径。 |
liteflow.rule-db.etcd.user | — | 可选,etcd鉴权用户名,和password必须成对配置。 |
liteflow.rule-db.etcd.password | — | 可选,etcd鉴权口令。 |
liteflow.rule-db.etcd.ca-certificate | — | 可选,CA证书文件路径,PEM格式。只在endpoints是https://时生效,且必须是可读的文件。 |
liteflow.rule-db.etcd.client-certificate | — | 可选,mTLS用的客户端证书文件路径,和client-key必须成对配置。 |
liteflow.rule-db.etcd.client-key | — | 可选,mTLS用的客户端私钥文件路径。 |
liteflow.rule-db.etcd.authority | — | 可选,用来覆盖gRPC authority。 |
liteflow.rule-db.etcd.connect-timeout-millis | 5000 | 连接超时,单位毫秒,必须大于0。 |
liteflow.rule-db.etcd.keepalive-time-seconds | 30 | gRPC keepalive探测间隔,单位秒,必须大于0。 |
liteflow.rule-db.etcd.keepalive-timeout-seconds | 10 | keepalive探测超时,单位秒,必须大于0。 |
liteflow.rule-db.etcd.keepalive-without-calls | true | 没有活跃调用时是否仍然发送keepalive探测。 |
liteflow.rule-db.etcd.client-bean-name | — | 要复用的io.etcd.jetcd.Client bean名。etcd后端不做按类型的自动查找,想复用就必须配这一项。配了之后上面那些连接、认证、TLS配置都不再生效。bean不存在时启动抛ConfigErrorException。 |
# Nacos 专属配置
| 配置项 | 默认 | 说明 |
|---|---|---|
liteflow.rule-db.nacos.server-addr | — | Nacos地址,不配则自动查找容器里的ConfigService。要求Nacos Server 2.x以上。 |
liteflow.rule-db.nacos.namespace | public | Nacos的namespace ID,注意不要填控制台上的显示名称。 |
liteflow.rule-db.nacos.group | LITEFLOW_RULE_DB | Catalog所在的group,只允许字母、数字、下划线、连字符、点和冒号。 |
liteflow.rule-db.nacos.data-id-prefix | liteflow-rule-db | Catalog的dataId前缀,最终的dataId是{prefix}.{applicationName}.catalog.json。字符约束和group一样。 |
liteflow.rule-db.nacos.username / .password | — | Nacos用户名和口令,必须成对配置。 |
liteflow.rule-db.nacos.access-key / .secret-key | — | Nacos的AK/SK,必须成对配置,且不能和username/password同时配。 |
liteflow.rule-db.nacos.timeout-millis | 3000 | 配置读取和监听注册的超时,单位毫秒,必须大于0。 |
liteflow.rule-db.nacos.config-service-bean-name | 自动查找 | 要复用的ConfigService bean名。复用的bean归容器所有,Provider关闭时不会调它的shutDown()。 |
独立Publisher通过NacosPublisherConfig.configService(...)复用外部客户端,所有权规则也一样。没传客户端时由Publisher自己创建,并在close()时关闭。显式传进来的bean或客户端本身已经带了连接和认证配置,这种情况下server-addr这类建连参数不参与创建。
# 与旧配置的关系
用了Rule-DB模式之后,下面这些旧配置就不再适用了,它们的语义都由rule-db.*接管:
liteflow.rule-source:和Rule-DB互斥,同时配置会启动报错,报的是rule-source and rule-db mode cannot be used together, please remove one of them。parseMode、enableMonitorFile、chainCacheEnabled、chainCacheCapacity:Rule-DB这条路径不读这些配置,解析时机、热重载和缓存语义都由rule-db.*管,所以配了也没效果。建议直接从配置文件里删掉,免得后面的人误解。
帮助我们改善此文档 (opens new window)



