zoukankan      html  css  js  c++  java
  • SpringCloud使用Feign服务通信踩的坑

      fallback熔断器实现了Feign客户端的所有方法,当网络不通或者访问失败时,会自动调用fallback服务降级类中的方法。

    启动项目时报错了,具体的报错信息如下:

    Caused by: java.lang.IllegalStateException: No fallback instance of type class com.xxx.xxx.feign.fallback.RemoteUserFallback found for feign client xxx

    报错内容明显是没找到RemoteUserFallBack这个类

    1、检查配置文件

    feign:
      hystrix:
        enabled: true # 开启Feign的熔断功能 默认是关闭的

    2、启动类上需要@EnableFeignClients注解

    @EnableFeignClients(basePackages = {"com.xxx.包名"}) //开启Feign并扫描Feign客户端

    3、Feign客户端类上使用@FeignClient,通过fallback属性来指明对应熔断器的类名

    @FeignClient(value = "服务名", fallback = RemoteUserFallback.class,) //声明当前类是一个Feign客户端,并指定请求的服务名

    4、fallback熔断器类上需要加注解@Component,确保可以被spring扫描

    我报错的原因就是出现在第四步这里,尽管我加了@component注解。SpringBoot在启动的时候 会扫描main类所在包及其子包进行Bean的实例化,但是fallback熔断器类并不在我启动类的子类下面,我这里是通过引入其模块来调用这里面的方法。

    所以最后我在启动类上加了@ComponentScan注解:

    @ComponentScan(basePackages = {"com.xxx"})

    OK,成功启动并访问成功。

  • 相关阅读:
    保存ADO的记录集为XML文件
    [C++] Undefined reference to vtable
    Csdn博客的一个bug
    深入解析ATL(第二版ATL8.0)(1.111.13节)
    不同操作系统下记事本的换行符号
    dom4j学习总结(一)
    关于firefox的copy/paste的问题
    php URL编码解码函数
    php连接MySQL数据库的一些问题
    使用 jQuery progressBar 做文件上传的进度条指示
  • 原文地址:https://www.cnblogs.com/ruiyeclub/p/13549653.html
Copyright © 2011-2022 走看看