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,一开始没有注意到这个点,浪费了许多时间。

参考链接

  1. Caused by: java.lang.IllegalStateException: No Feign Client for loadBalancing defined
  2. stackoverflow
  3. SpringCloud OpenFeign报错
  4. No Feign Client for loadBalancing defined

spring cloud整合feign和nacos报错:No Feign Client for loadBalancing defined. Did you forget to include相关推荐

  1. No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-netflix-ri

    使用SpringCloud OpenFeign过程中,启动时出现的问题 <dependency><groupId>org.springframework.cloud</g ...

  2. Spring Cloud 的 Gateway 服务启动报错

    Spring Cloud 的 Gateway 启动报错 1.控制台错误 2.报错时主要代码配置 2.1 pom 文件 2.2 启动类 2.3 application.yml 文件 3.解决办法 1.控 ...

  3. No Feign Client for loadBalancing defined.错误

    SpringCloud OpenFeign报错 No Feign Client for loadBalancing defined. Did you forget to include spring- ...

  4. 谷粒商城基础篇爬坑笔记--No Feign Client for loadBalancing defined以及加载测试失败

    在远程调用章节写完代码运行member模块开启失败,报错信息为: No Feign Client for loadBalancing defined. Did you forget to includ ...

  5. 整合rocketmq/stream-rocketmq启动报错channel.AbstractMessageChannel问题

    springboot整合rocketmq/stream-rocketmq启动报错 spring boot.springcloud.springcloud alibaba项目整合rocketmq时.一启 ...

  6. docker中安装nacos报错 com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException: UNAVAILABLE: io exception

    docker中安装nacos报错 com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException: UNAVAILABLE: io exception ...

  7. Spring Cloud 整合 seata 实现分布式事务极简入门

    Spring Cloud 整合 seata 实现分布式事务极简入门 seata Spring Cloud 整合 seata 实现分布式事务极简入门 1. 概述 2. 部署nacos 3. 部署seat ...

  8. Feign的调用报错时,降级处理方式,fallBackFactory

    Feign的调用报错时,降级处理fallBackFactory 项目结构: 代码: remoteCdsService package com.gsafety.framework.api;import ...

  9. spring cloud整合OpenFeign

    spring cloud整合OpenFeign pom.xml配置 <!-- https://mvnrepository.com/artifact/org.springframework.clo ...

最新文章

  1. 在这个什么都看脸的时代,如何用 GUI 提高 python 程序的颜值?
  2. F - Tmutarakan Exams URAL - 1091 -莫比乌斯函数-容斥 or DP计数
  3. 论网络游戏如何结合社区设计
  4. AsSystemRum 系统提权工具 实现思路及其源码
  5. python学习笔记(三)—— 序列类型及方法(列表、元组、字符串)
  6. USACO Section 1.5 Prime Palindromes 解题报告
  7. LINUX framebuffer
  8. Spring源码解析-实例化bean对象
  9. 【移植Linux 3.4.2内核第一步】之简单修改
  10. Window系统下安装Redis
  11. 第五天--表单与页面
  12. #leetcode刷题之路27-移除元素
  13. 怎么接收xml报文_Benteler/本特勒 DESADV 报文生成过程
  14. Linux-SHELL基本操作
  15. 微信投票刷票器手机免费版、手机微信投票作弊神器原理
  16. mysql 同比sql_mysql计算同比和环比的区别_【面试真题】Mysql实现计算同比、环比...
  17. php游戏传奇,GitHub - esons/pmir2: php,swoole,mirserver,mir2,传奇2,服务器,游戏服务器
  18. 5.Django路由path和re_path详解
  19. Ruoyi 整合Flowable UI Modeler 6.7.2
  20. AR技术简谈:相关原理,技术应用以及设备推荐,带你感受虚拟信息与真实世界巧妙融合。

热门文章

  1. 用上这门黑科技,运维从此不背锅!
  2. 一步两步带你实现Android沉浸式设计
  3. ubuntu 16.04 安装 openCV 3.2 --对该问题的处理CMake Error at cmake/OpenCVModule.cmake:295 (message)
  4. Java忽略警告注解@SuppressWarnings
  5. 信用卡套现千万别触碰这两条红线,否则银行会盯上你!
  6. 一、AutoCAD 2013建筑设计师装潢施工设计篇 基本知识
  7. 中国移动说:给你免费发短信的工具
  8. QUANT[2]:量化交易策略基本框架搭建
  9. html把键显示在中间,ipad平板键盘显示在屏幕中间怎么办?
  10. 鄙人从事IT业已经有9年时间,少壮不努力,长大搞IT