自学SpringCloudAlibaba踩坑:No Feign Client for loadBalancing defined.

编程入门 行业动态 更新时间:2024-10-27 21:20:01

自学SpringCloudAlibaba踩坑:No <a href=https://www.elefans.com/category/jswz/34/1768189.html style=Feign Client for loadBalancing defined."/>

自学SpringCloudAlibaba踩坑:No Feign Client for loadBalancing defined.

这个问题首先是openfeign的版本问题导致的,网上有很多人都告诉你
需要排除spring-cloud-starter-alibaba-nacos-discovery中的ribbon。和添加spring-cloud-starter-loadbalancer依赖,然后在yml或者properties中添加配置

spring:application:name: nacos-consumercloud:loadbalancer:ribbon:enable: false

我这些坑都踩了,但是我还踩了一个坑,那就是版本管理,我不知道什么样的版本spring-cloud-starter-openfeign和spring-cloud-starter-alibaba-nacos-discovery会产生冲突,所以我就在maven官网上到处找版本乱配置
如(错误示范):

非常浪费时间,后面我想到了dependencyManagement 使用这个在不指定版本号的情况下,Maven 会自动从 spring-cloud-dependencies 中获取对应的版本号。
所以我的pom文件变成了这样

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns=".0.0"xmlns:xsi=""xsi:schemaLocation=".0.0 .0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.3</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.consumer</groupId><artifactId>consumer</artifactId><version>0.0.1-SNAPSHOT</version><name>ServiceConsumer</name><description>ServiceConsumer</description><properties><java.version>1.8</java.version></properties><dependencies><!-- spring boot web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!--SpringCloud Alibaba nacos--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><!--  不再使用Ribbon而是使用spring-cloud-loadbalancer,所以不引入spring-cloud-loadbalancer会报错--><exclusions><exclusion><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-ribbon</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId><version>3.1.1</version></dependency></dependencies><dependencyManagement><dependencies><!-- Spring Cloud --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>2021.0.1</version><type>pom</type><scope>import</scope></dependency><!-- Spring Cloud Alibaba --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2021.0.1.0</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

配合这个版本问题解决,然后我在去解决冲突的依赖,如:排除spring-cloud-starter-alibaba-nacos-discovery中的ribbon。和添加spring-cloud-starter-loadbalancer依赖,所以如果你这些都改好了,但是还是报错No Feign Client for loadBalancing defined.,你就需要反思自己是不是springCloud的版本管理出了问题

总结:约定大于配置,统一的版本管理是非常重要的。如果后续还是报了其他的错误,您可以自己指定组件的其他版本号来解决冲突

补充:
我在解决这个问题的时候在stackoverflow中看到,给@FeignClient(name = “XXX”)加url来解决这个问题,但给FeignClient注解加上url这个配置,就是指定了服务的地址,所以就不会加载负载均衡这个功能,自然就不会报错No Feign Client for loadBalancing defined.想要达到@FeignClient的负载均衡功能还是需要使用服务名访问

更多推荐

自学SpringCloudAlibaba踩坑:No Feign Client for loadBalancing defined.

本文发布于:2024-03-06 12:09:16,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1715293.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Feign   踩坑   SpringCloudAlibaba   defined   loadBalancing

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!