Closed DawnSouther closed 4 years ago
Please upgrade Dubbo Spring Boot 2.7.6.
Please upgrade Dubbo Spring Boot 2.7.6.
the problem still exists. this is my new pom
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.orbitz.consul</groupId>
<artifactId>consul-client</artifactId>
<version>1.4.2</version>
</dependency>
问题简述:
在引入dubbo-spring-boot-starter后,spring gateway无法路由至目标服务,会报空指针错误。
依赖版本
spring gateway版本 2.2.2.RELEASE spring-cloud-loadbalancer版本 2.2.2.RELEASE dubbo版本 2.7.4.1 dubbo-spring-boot-starter版本 2.7.4.1 注册中心使用consul 1.6.2版本
部分pom.xml
部分路由配置
问题描述
在引入dubbo-spring-boot-starter依赖后(单独引入dubbo和dubbo-dependencies-zookeeper不会出现此问题,意味着仅引入,不配置不使用), gateway中的依赖包spring-cloud-loadbalancer配置类 org.springframework.cloud.loadbalancer.annotation.LoadBalancerClientConfiguration和 org.springframework.cloud.loadbalancer.annotation.LoadBalancerClientConfiguration.ReactiveSupportConfiguration。 在创建bean reactorServiceInstanceLoadBalancer和discoveryClientServiceInstanceListSupplier时,取得Environment,与ApplicationContext中取得的的Environment不一致; 但在不引入dubbo-spring-boot-starter时,注入的Environment与ApplicationContext中取得的的Environment一致。 疑似Environment注入错误?
原始代码
临时解决办法
我修改了spring-cloud-loadbalancer源码,将Environment换为从ApplicationContext取得,问题可以解决。
修改后的代码及变量记录
bean reactorServiceInstanceLoadBalancer
bean discoveryClientServiceInstanceListSupplier