[seata]seata启动指定nacos.client.contextPath变量在nacos作为注册中心和配置中心未生效

2023-12-19 822 views
8

在ParamUtil中,指定了nacos的路由 image 在nacos作为配置中心和配置中心时Properties属性中并没有该属性,导致SecurityProxy初始化时,还是使用的/nacos而不是启动时指定的变量 image 导致连接nacos失败 image

回答

8

个人觉得应该在NacosConfiguration#getConfigProperties方法和NacosRegistryServiceImpl#getNamingProperties方法加上 if(ParamUtil.getDefaultContextPath() != null) { properties.setProperty(CONTEXT_PATH,ParamUtil.getDefaultContextPath()); } 的判断 image

5

ParamUtil这个类是属于nacos的吗,如果是应该是由nacos侧决定吗?建议反馈至nacos

1

seata中的源代码

2

image image

0

确实不是seata中的是nacos-client中的,seata启动如何指定nacos的context-path,源码里面好像没有这个配置属性

1

与nacos社区沟通后,此参数由nacos读取和使用,此参数在应用启动时通过-D注入启动变量中,如果有问题请反馈至nacos社区

8

这个截图里画红框的其实应该写在nacos内侧统一参数作用,nacos.client.contextPath和contextPath映射为一个配置项,且读取配置存在优先级。外侧由集成方去传,只传contextPath。 Seata集成侧后续会开放contextPath的传参,而配置的映射和优先级读取应该提个issue给nacos,这样在Seata侧即便用低版本的Seata,只要改为Nacos高版本,使用一个-D参数就能支持。