[apache/dubbo]不同版本超时时间的兼容问题

2024-06-24 188 views
2

旧com.alibaba.dubbo版本:2.5.9 新org.apache.dubbo版本:2.7.17

问题:旧的dubbo中设置过期时间放在字段default.timeout中,但是新的版本是在timeout中直接取值,会导致在旧的版本中设置的超时时间无效 image image 这样的情况该如何兼容?

回答

5

org/apache/dubbo/common/URLStrParser.java:300

            // compatible with lower versions registering "default." keys
            if (name.startsWith(DEFAULT_KEY_PREFIX)) {
                params.putIfAbsent(name.substring(DEFAULT_KEY_PREFIX.length()), value);
            }

这里会自动替换

1

我看了一下这里的代码,好像是zk作为注册中心才会去执行,我们的注册中心是nacos,这里的代码没有执行到

2

@tiancaipei 3.1.2是否存在这个问题?

5

旧版本作为消费者,新版本作为生产者的情况下,就旧版本设置超时时间'default.timeout',新版本取不到'default.timeout',只能取'timeout' 是这样吗?

2

请问下在'ZookeeperRegistry'的哪行代码调用的?

9

org.apache.dubbo.registry.zookeeper.ZookeeperRegistry#toUrlsWithoutEmpty

2

@tiancaipei 3.1.2是否存在这个问题?

我尝试了一下,还是存在这个问题的 企业微信截图_16687532815561 企业微信截图_16687532541250 企业微信截图_16687533793393 企业微信截图_16687533702744 企业微信截图_16687531413426

0

我通过如下方法解决了问题,不使用全局的默认超时时间,针对每个接口设置超时时间 @Service(version = "1.0", timeout = 1000),接口级的超时时间字段就是timeout,两个版本可以兼容

9

Too powerful