seata 使用nacos配置中心,修改配置后缓存刷新的问题

piwo6bdm  于 2个月前  发布在  Nacos
关注(0)|答案(6)|浏览(45)

使用nacos作为seata的配置中心,修改后配置没有实时刷新。
必须要调用seata\config\seata-config-core\src\main\java\io\seata\config\ConfigurationCache.java中public static void addConfigListener(String dataId, ConfigurationChangeListener... listeners)方法才能刷新缓存吗?

项目中配置变更后没有其他额外要做的操作,只想nacos配置修改后,seata也实时更新即可。
若有大量配置(dataId很多),都想实时刷新,应该怎么操作?

ki1q1bka

ki1q1bka1#

有哪些dataid你需要实时刷新的?可以举例一下吗?

ds97pgxw

ds97pgxw2#

有哪些dataid你需要实时刷新的?可以举例一下吗?

比如:store.db.dbType, store.db.url, store.db.user, store.db.password.
之前连接本地数据库,现在要连接其他地址的数据库,用户名密码都有变更。

djp7away

djp7away3#

有哪些dataid你需要实时刷新的?可以举例一下吗?

或者日志相关的配置:
client.undo.dataValidation=true
client.undo.logSerialization=jackson
client.undo.onlyCareUpdateColumns=true
server.undo.logSaveDays=7
server.undo.logDeletePeriod=86400000
client.undo.logTable=undo_log
client.undo.compress.enable=true
client.undo.compress.type=zip
client.undo.compress.threshold=64k

kxe2p93d

kxe2p93d4#

有哪些dataid你需要实时刷新的?可以举例一下吗?

实测有两种方式可以更新:

  1. 重启seata server
  2. 调用方法 ConfigurationCache.addConfigListener(dataId, ConfigurationChangeListener)

但是:
方法1 项目上线后不允许重启seata-server
方法2 目前对seata 配置进行了扩展,有很多配置需要热加载;若后期再进行扩展配置,还需要修改代码。这样是否有点繁琐?

jljoyd4f

jljoyd4f5#

有哪些dataid你需要实时刷新的?可以举例一下吗?

或者日志相关的配置:
client.undo.dataValidation=true
client.undo.logSerialization=jackson
client.undo.onlyCareUpdateColumns=true
server.undo.logSaveDays=7
server.undo.logDeletePeriod=86400000
client.undo.logTable=undo_log
client.undo.compress.enable=true
client.undo.compress.type=zip
client.undo.compress.threshold=64k

我们看下这些配置如果动态修改,会对运行中的应用是否会造成影响

332nm8kg

332nm8kg6#

有哪些dataid你需要实时刷新的?可以举例一下吗?

或者日志相关的配置:
client.undo.dataValidation=true
client.undo.logSerialization=jackson
client.undo.onlyCareUpdateColumns=true
server.undo.logSaveDays=7
server.undo.logDeletePeriod=86400000
client.undo.logTable=undo_log
client.undo.compress.enable=true
client.undo.compress.type=zip
client.undo.compress.threshold=64k

我们看下这些配置如果动态修改,会对运行中的应用是否会造成影响

我看了一下里面使用配置的代码,除了少数几个配置加了ConfigurationChangeListener,其他配置基本上都是初始化的时候就使用了,这样就不支持动态刷新配置了吧?也就是说这些配置基本上,只能重启以后才能刷新配置,不知道我的理解有没有问题。

相关问题