使用open feign开发接口,直接启动失败,抛出如下异常:
nested exception is java.lang.IllegalStateException: No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalancer?
问题很显然是没有添加 spring-cloud-starter-loadbalancer
,所以在pom.xml中添加如下依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>
重新导入依赖之后,启动成功,但是调用接口依旧报错:
java.lang.AbstractMethodError: org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.choose(Ljava/lang/String;Lorg/springframework/cloud/client/loadbalancer/Request;)Lorg/springframework/cloud/client/ServiceInstance;
这是因为spring cloud将负载均衡组件从ribbon替换成了loadbalancer,需要在spring-cloud-starter-alibaba-nacos-discovery排除ribbon组件,否则loadbalancer是不生效的。
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</exclusion>
</exclusions>
</dependency>
重新导入依赖之后,重启项目,调用成功。