使用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很多),都想实时刷新,应该怎么操作?
6条答案
按热度按时间ki1q1bka1#
有哪些dataid你需要实时刷新的?可以举例一下吗?
ds97pgxw2#
有哪些dataid你需要实时刷新的?可以举例一下吗?
比如:store.db.dbType, store.db.url, store.db.user, store.db.password.
之前连接本地数据库,现在要连接其他地址的数据库,用户名密码都有变更。
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
kxe2p93d4#
有哪些dataid你需要实时刷新的?可以举例一下吗?
实测有两种方式可以更新:
但是:
方法1 项目上线后不允许重启seata-server
方法2 目前对seata 配置进行了扩展,有很多配置需要热加载;若后期再进行扩展配置,还需要修改代码。这样是否有点繁琐?
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
我们看下这些配置如果动态修改,会对运行中的应用是否会造成影响
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,其他配置基本上都是初始化的时候就使用了,这样就不支持动态刷新配置了吧?也就是说这些配置基本上,只能重启以后才能刷新配置,不知道我的理解有没有问题。