关于Nacos 远程调用Feign遇见的小bug

启动服务时候报错:

No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalancer?

看报错就是由于SpringCloud Feign在Hoxton.M2 RELEASED版本之后不再使用Ribbon而是使用spring-cloud-loadbalancer,所以不引入spring-cloud-loadbalancer会报错;

然后我们还得排除ribbon依赖,不然loadbalancer无效:

报错信息:

​
org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.choose
(Ljava/lang/String;Lorg/springframework/cloud/client/loadbalancer/Request;)
Lorg/springframework/cloud/client/ServiceInstance;

​

再依赖添加如下配置就行了:

<!--服务注册-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <!--不使用Ribbon 进行客户端负载均衡-->
    <exclusions>
        <exclusion>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<!--使用Spring Cloud LoadBalancer 进行客户端负载均衡-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>

后面就调用成功啦;

经验分享 程序员 微信小程序 职场和发展