一个feign使用不当的问题

摘要: 一个feign使用不当的问题

正文:

一个错误的示例

接口与回退逻辑

@FeignClient(name = "service-A",fallback=AServiceFallback.class )
public interface AService {
  @RequestMapping(value = "/aApi/getA", method = RequestMethod.GET)
  List<AInfo> getA();
}
@Slf4j
public class AServiceFallback implements AService{
  @Override
  public List<AInfo> getA() {
    log.error("进入回退方法:异常");
  }
}

配置文件

hystrix:
    command:
        default:
            execution:
                isolation:
                    thread:
                        timeoutInMilliseconds: 50000
ribbon:
    ReadTimeout: 60000
    ConnectTimeout: 60000
    eureka:
        enabled: true

以上配置在不熟悉feign-hystrix 或者查看 Feign Hystrix Fallbacks 的可能感觉并没有问题,项目启动也是正常

正确使用方式

接口与回退逻辑

@FeignClient(name = "service-A",fallback=AServiceFallback.class )
public interface AService {
  @RequestMapping(value = "/aApi/getA", method = RequestMethod.GET)
  List<AInfo> getA();
}
@Slf4j
@Component
public class AServiceFallback implements AService{
  @Override
  public List<AInfo> getA() {
    log.error("进入回退方法:异常");
  }
}

配置文件

hystrix:
    command:
        default:
            execution:
                isolation:
                    thread:
                        timeoutInMilliseconds: 50000
ribbon:
    ReadTimeout: 60000
    ConnectTimeout: 60000
    eureka:
        enabled: true
feign:
  hystrix:
    enabled: true

可以看到,在配置文件中新增了feign.hystrix.enabled = true 进行激活,如果代码不变启动项目会报:

Caused by: java.lang.IllegalStateException: No fallback instance of type class com.yss.xx.feign.fallback.AServiceFallback found for feign client service-A

可以参考Feign Hystrix Support ,也可以在回退逻辑接口的类上面使用Spring 通用模式装配注解@ComponentAServiceFallback进行装配

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序猿DD

Spring Cloud Feign的文件上传实现

在Spring Cloud封装的Feign中并不直接支持传文件,但可以通过引入Feign的扩展包来实现,本文就来具体说说如何实现。 ? 服务提供方(接收文件) ...

41911
来自专栏一个会写诗的程序员的博客

13.7 SpringBoot集成日志系统logback的几个问题问题1: Logging system failed to initialize using configuration from

让人感到疑惑的是,SpringBoot居然没有对application.properties配置文件value末端作空格trim处理。

4121
来自专栏菩提树下的杨过

需要安全认证的远程EJB调用示例(Jboss EAP 6.2环境)

一,Remote EJB 服务接口定义: 1 package yjmyzz.ejb.server.helloworld; 2 3 public interfa...

2425
来自专栏醉生梦死

shell脚本--练习1(爬虫)

3334
来自专栏Albert陈凯

2018-11-17 面试必问问题TransactionalJava事务之一——Java事务的基本问题

关于加@Transactional注解的方法之间调用,事务是否生效的问题 https://blog.csdn.net/blacktal/article/det...

2712
来自专栏Netkiller

怎样制作RPM包

怎样制作RPM包 摘要 我在网上找RPM包的制作例子几乎都是C源码编译安装然后生成RPM包, 而我的程序不是C写的很多时候是脚本语言如Python, PHP 甚...

6956
来自专栏xingoo, 一个梦想做发明家的程序员

侦听局域网内密码

只需在前面的网络嗅探程序基础上,添加对搜索出的端口号进行的增加功能即可: 代码如下: 在DecodeIPPacket中添加: switch(::ntohs(pT...

1845
来自专栏技术总结

献给移动端的服务器搭建

application.properties这个是项目的一些配置,举例一下默认是8080端口,我们如果想改下端口的话,就可以在配置增加

2422
来自专栏bboysoul

linux编译安装apache

wget http://mirrors.ustc.edu.cn/apache/httpd/httpd-2.4.25.tar.gz tar -zxvf http...

2423
来自专栏程序猿DD

Spring Boot使用@Async实现异步调用:ThreadPoolTaskScheduler线程池的优雅关闭

上周发了一篇关于Spring Boot中使用 @Async来实现异步任务和线程池控制的文章:《Spring Boot使用@Async实现异步调用:自定义线程池》...

6057

扫码关注云+社区

领取腾讯云代金券