spring cloud整合feign和nacos报错:No Feign Client for loadBalancing defined. Did you forget to include
Did you forget to include spring-cloud-starter-loadbalancer
- 问题描述
- 项目环境
- 解决方案
- 1、引入eureka依赖——无效
- 2、降低spring cloud版本——无效
- 3、添加ribbon——无效
- 4、加入spring-cloud-loadbalancer并在nacos中排除ribbon依赖——问题解决
- 参考链接
问题描述
最近在使用最新版本的nacos和feign的过程中,启动时遇到一个错误:
Caused by: java.lang.IllegalStateException: No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalancer?
百思不得其解,之前的spring cloud版本没有遇到这样的问题。花了将近几个小时,终于解决,记录一下,希望能给大家带来一点帮助。
项目环境
项目中的父pom文件版本依赖管理如下:
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.4</version></parent><properties><spring-cloud.version>2020.0.2</spring-cloud.version></properties><dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.0.RELEASE</version><type>pom</type><scope>import</scope></dependency><!--spring cloud --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
用的是最新版本的springboot 和springcloud,然后在子项目中,我用到了feign和nacos,依赖如下:
<dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency></dependencies>
解决方案
1、引入eureka依赖——无效
第一时间想到的,spring cloud和springboot版本不兼容。查看spring cloud官网,发现spring boot版本号和spring cloud版本号可以对应:
说明项目是没问题的,就上网查找了一下,结果参考了这两位仁兄说的:
在项目中加入eureka依赖:
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>
再次启动,报错:
Field autoServiceRegistration in org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationAutoConfiguration required a single bean, but 2 were found:- nacosAutoServiceRegistration: defined by method 'nacosAutoServiceRegistration' in class path resource [com/alibaba/cloud/nacos/registry/NacosServiceRegistryAutoConfiguration.class]- eurekaAutoServiceRegistration: defined by method 'eurekaAutoServiceRegistration' in class path resource [org/springframework/cloud/netflix/eureka/EurekaClientAutoConfiguration.class]Action:Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumed
这是因为项目中已经用到了nacos,再次引入eureka,会造成有两个注册中心的问题,说明这种解决方案无效。
2、降低spring cloud版本——无效
既然之前的版本没问题,那我就降级回去不就完事了,于是乎,我把项目的父pom中spring cloud版本降级到Hoxton SR1,spring boot版本也随之降级到2.2.1,即:
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.1.RELEASE</version></parent>
<dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.0.RELEASE</version><type>pom</type><scope>import</scope></dependency><!--spring cloud --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Hoxton.SR1</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
maven clean后再次启动,仍然报错:
错误信息:
Caused by: java.lang.IllegalStateException: No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalancer?at org.springframework.cloud.openfeign.FeignClientFactoryBean.loadBalance(FeignClientFactoryBean.java:333) ~[spring-cloud-openfeign-core-3.0.2.jar:3.0.2]at org.springframework.cloud.openfeign.FeignClientFactoryBean.getTarget(FeignClientFactoryBean.java:360) ~[spring-cloud-openfeign-core-3.0.2.jar:3.0.2]at org.springframework.cloud.openfeign.FeignClientFactoryBean.getObject(FeignClientFactoryBean.java:339) ~[spring-cloud-openfeign-core-3.0.2.jar:3.0.2]at org.springframework.cloud.openfeign.FeignClientsRegistrar.lambda$registerFeignClient$0(FeignClientsRegistrar.java:230) ~[spring-cloud-openfeign-core-3.0.2.jar:3.0.2]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1231) ~[spring-beans-5.3.5.jar:5.3.5]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1173) ~[spring-beans-5.3.5.jar:5.3.5]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:564) ~[spring-beans-5.3.5.jar:5.3.5]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524) ~[spring-beans-5.3.5.jar:5.3.5]... 34 common frames omitted
这次的错误信息跟第一次一样,可见降低版本这事已经行不通了,于是我复原了父pom。
3、添加ribbon——无效
在stackoverflow上看到了这两种解决方案:
因为不想在feign上加url,显得比较麻烦,于是我选择了第二种方案,加ribbon并配置了相关属性,启动还是报错:
Caused by: java.lang.IllegalStateException: No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalancer?
但是其中的第一种方案,我还是有点感兴趣,于是就根据第一种方案中的关键字spring-cloud-loadbalancer,搜索了一下。
4、加入spring-cloud-loadbalancer并在nacos中排除ribbon依赖——问题解决
继续搜索,发现如下结果:
根据这位大佬的说法,这是因为:
由于SpringCloud Feign在Hoxton.M2 RELEASED版本之后不再使用Ribbon而是使用spring-cloud-loadbalancer,所以不引入spring-cloud-loadbalancer会报错
解决方法
加入spring-cloud-loadbalancer依赖 并且在nacos中排除ribbon依赖,不然loadbalancer无效
问题突然有了点头目,于是乎,加入如下依赖:
//我是在这引入了spring-cloud-starter-alibaba-nacos-discovery
<dependency><groupId>com.oyz.gulimall</groupId><artifactId>gulimall-common</artifactId><version>0.0.1-SNAPSHOT</version><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>
之后,再次启动项目:
问题完美解决,还是得关注问题报错点:Did you forget to include spring-cloud-starter-loadbalancer,一开始没有注意到这个点,浪费了许多时间。
参考链接
- Caused by: java.lang.IllegalStateException: No Feign Client for loadBalancing defined
- stackoverflow
- SpringCloud OpenFeign报错
- No Feign Client for loadBalancing defined
spring cloud整合feign和nacos报错:No Feign Client for loadBalancing defined. Did you forget to include相关推荐
- No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-netflix-ri
使用SpringCloud OpenFeign过程中,启动时出现的问题 <dependency><groupId>org.springframework.cloud</g ...
- Spring Cloud 的 Gateway 服务启动报错
Spring Cloud 的 Gateway 启动报错 1.控制台错误 2.报错时主要代码配置 2.1 pom 文件 2.2 启动类 2.3 application.yml 文件 3.解决办法 1.控 ...
- No Feign Client for loadBalancing defined.错误
SpringCloud OpenFeign报错 No Feign Client for loadBalancing defined. Did you forget to include spring- ...
- 谷粒商城基础篇爬坑笔记--No Feign Client for loadBalancing defined以及加载测试失败
在远程调用章节写完代码运行member模块开启失败,报错信息为: No Feign Client for loadBalancing defined. Did you forget to includ ...
- 整合rocketmq/stream-rocketmq启动报错channel.AbstractMessageChannel问题
springboot整合rocketmq/stream-rocketmq启动报错 spring boot.springcloud.springcloud alibaba项目整合rocketmq时.一启 ...
- docker中安装nacos报错 com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException: UNAVAILABLE: io exception
docker中安装nacos报错 com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException: UNAVAILABLE: io exception ...
- Spring Cloud 整合 seata 实现分布式事务极简入门
Spring Cloud 整合 seata 实现分布式事务极简入门 seata Spring Cloud 整合 seata 实现分布式事务极简入门 1. 概述 2. 部署nacos 3. 部署seat ...
- Feign的调用报错时,降级处理方式,fallBackFactory
Feign的调用报错时,降级处理fallBackFactory 项目结构: 代码: remoteCdsService package com.gsafety.framework.api;import ...
- spring cloud整合OpenFeign
spring cloud整合OpenFeign pom.xml配置 <!-- https://mvnrepository.com/artifact/org.springframework.clo ...
最新文章
- 在这个什么都看脸的时代,如何用 GUI 提高 python 程序的颜值?
- F - Tmutarakan Exams URAL - 1091 -莫比乌斯函数-容斥 or DP计数
- 论网络游戏如何结合社区设计
- AsSystemRum 系统提权工具 实现思路及其源码
- python学习笔记(三)—— 序列类型及方法(列表、元组、字符串)
- USACO Section 1.5 Prime Palindromes 解题报告
- LINUX framebuffer
- Spring源码解析-实例化bean对象
- 【移植Linux 3.4.2内核第一步】之简单修改
- Window系统下安装Redis
- 第五天--表单与页面
- #leetcode刷题之路27-移除元素
- 怎么接收xml报文_Benteler/本特勒 DESADV 报文生成过程
- Linux-SHELL基本操作
- 微信投票刷票器手机免费版、手机微信投票作弊神器原理
- mysql 同比sql_mysql计算同比和环比的区别_【面试真题】Mysql实现计算同比、环比...
- php游戏传奇,GitHub - esons/pmir2: php,swoole,mirserver,mir2,传奇2,服务器,游戏服务器
- 5.Django路由path和re_path详解
- Ruoyi 整合Flowable UI Modeler 6.7.2
- AR技术简谈:相关原理,技术应用以及设备推荐,带你感受虚拟信息与真实世界巧妙融合。
热门文章
- 用上这门黑科技,运维从此不背锅!
- 一步两步带你实现Android沉浸式设计
- ubuntu 16.04 安装 openCV 3.2 --对该问题的处理CMake Error at cmake/OpenCVModule.cmake:295 (message)
- Java忽略警告注解@SuppressWarnings
- 信用卡套现千万别触碰这两条红线,否则银行会盯上你!
- 一、AutoCAD 2013建筑设计师装潢施工设计篇 基本知识
- 中国移动说:给你免费发短信的工具
- QUANT[2]:量化交易策略基本框架搭建
- html把键显示在中间,ipad平板键盘显示在屏幕中间怎么办?
- 鄙人从事IT业已经有9年时间,少壮不努力,长大搞IT