io.seata.config.consul.ConsulConfiguration#getLatestConfig
和io.seata.config.nacos.NacosConfiguration#getLatestConfig
在获取值先从 seataConfig 中获取
@Override
public String getLatestConfig(String dataId, String defaultValue, long timeoutMills) {
String value = seataConfig.getProperty(dataId);
if (value == null) {
ConfigFuture configFuture = new ConfigFuture(dataId, defaultValue, ConfigFuture.ConfigOperation.GET,
timeoutMills);
consulNotifierExecutor.execute(() -> complete(getConsulClient().getKVValue(dataId, getAclToken()), configFuture));
value = (String) configFuture.get();
}
return value;
}
通过 java.util.Properties#getProperty(java.lang.String) 获取时,非 String 类型返回 null
public String getProperty(String key) {
Object oval = map.get(key);
String sval = (oval instanceof String) ? (String)oval : null;
Properties defaults;
return ((sval == null) && ((defaults = this.defaults) != null)) ? defaults.getProperty(key) : sval;
}
使用 consul,通过 seata.config.consul.key
指定 YAML 配置文件,不对每个 key 单独设置键值对,日志出现很多 ERROR 10624 --- [ main] io.seata.config.ConfigFuture : config operation timeout,cost:5022 ms,op:GET,dataId:service.disableGlobalTransaction
错误
非异常
对于非 String,如 Boolean,Integer 类型等能正常返回
使用 consul,通过 seata.config.consul.key 指定 YAML 配置文件,将https://seata.io/zh-cn/docs/user/configuration/consul.html
中提到的默认配置放在这一个 key 中,不对每个 key 单独设置键值对
- JDK version : 11
- Seata version: 1.5.1
- OS : Windows 11
- Others: consul:1.12.2