在进行消费端应用级配置刷新时候,发现下面代码中overrideQueryMap中的条件一直没进入,最终每次都会被 new OverrideInstanceAddressURL(url) 中的配置 this.overrideParams = URLParam.parse("");刷新为空,导致配置中心配置变更了也没效果,看代码理解的overrideQueryMap应该是有用的,现在看好像没发现有值,这是为什么?
if (referenceConfigurationListener != null) {
providerUrl = overrideWithConfigurators(referenceConfigurationListener.getConfigurators(), providerUrl);
}
private InstanceAddressURL overrideWithConfigurators(List<Configurator> configurators, InstanceAddressURL url) {
if (CollectionUtils.isNotEmpty(configurators)) {
// wrap url
OverrideInstanceAddressURL overrideInstanceAddressURL = new OverrideInstanceAddressURL(url);
if (overrideQueryMap != null) {
// override app-level configs
overrideInstanceAddressURL = (OverrideInstanceAddressURL) overrideInstanceAddressURL.addParameters(overrideQueryMap);
}
for (Configurator configurator : configurators) {
overrideInstanceAddressURL = (OverrideInstanceAddressURL) configurator.configure(overrideInstanceAddressURL);
}
return overrideInstanceAddressURL;
}
return url;
}
6条答案
按热度按时间r1wp621o1#
overrideQueryMap 这个参数的作用应该是在 #9163 中删除的。
你说的配置刷新不生效具体是怎么配置的,覆盖了哪些参数,使用的 Dubbo 是什么版本。
nuypyhwy2#
dubbo版本:3.1.7
使用的官方框架内部的demo工程。提供者:dubbo-demo-spring-boot-provider 消费者:dubbo-demo-spring-boot-consumer (消费者改了下在main函数中循环调用doSayHello)
提供者配置: application.yml
消费者配置: application.yml
nacos中的配置项:
测了下基本的timeout参数也不支持动态刷新生效,是我使用方式有问题吗?
另外消费端我开启接口级订阅,对一些参数好像也没法做到动态刷新,比如cluster,retries
3qpi33ja3#
@chickenlj PTAL
nom7f22z4#
@jihanchen888 建议使用 3.2.1 稳定版本。在3.2.x 版本中,路由规则进行了全面升级,支持了标签匹配等能力并修复了过往的一些问题
https://cn.dubbo.apache.org/zh-cn/overview/core-features/traffic/
https://cn.dubbo.apache.org/zh-cn/overview/tasks/traffic-management/timeout/
r7xajy2e5#
好的,了解了
我看了下最新版3.2.2 版本代码,在多机房注册中心时候,这边这个配置刷只会生效到一个机房吧? 第一个机房配置刷新后从新暴露设置到bounds中,后面机房循环进来更新时bounds中获取的exporterInvoker.getUrl()其实是之前更新过的,比较之后作为没有变更对应配置项就不会被更新。这样导致有时候调用的是配置生效的,有时候调用配置还是旧的
1l5u6lss6#
好的,了解了 我看了下最新版3.2.2 版本代码,在多机房注册中心时候,这边这个配置刷只会生效到一个机房吧? 第一个机房配置刷新后从新暴露设置到bounds中,后面机房循环进来更新时bounds中获取的exporterInvoker.getUrl()其实是之前更新过的,比较之后作为没有变更对应配置项就不会被更新。这样导致有时候调用的是配置生效的,有时候调用配置还是旧的
这个配置在多注册中心的时候确实是有问题的,可以帮提个 issue 或者尝试提个 PR 修复下