前言

上一篇我们使用注解@HystrixCommond的fallbackMethod属性实现回退。然而,Feign是以接口形式工作的,它没有方法体,上一篇讲解的方式显然不适用于Feign。

那么Feign要如何整合Hystrix呢?不仅如此,如何实现Feign的回退。

在springcloud中,为Feign添加回退更加简单。事实上,springcloud默认已为Feign整合了Hystrix,要想为Feign打开Hystrix支持,只需要设置feign.hystrix.enabled=true即可。

编码

1.复制项目microservie-consumer-movie-feign,将ArtifactId修改为microservice-consumer-movie-feign-hystrix-fallback.

2.在application.yml中添加feign.hystrix.enabled: true,从而开启Feign的Hystrix支持。

server:
port: 8082
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8083/eureka/
instance:
prefer-ip-address: true
spring:
application:
name: microservice-consumer-movie
feign:
hystrix:
enabled: true

3.将之前编写的Feign接口修改成如下内容:

@FeignClient(name = "microservice-provider-user",fallback = FeignClientFallback.class)
public interface UserFeignClient {
@RequestMapping(value="/{id}",method = RequestMethod.GET)
public User findById(@PathVariable("id") Long id);
}
@Component
class FeignClientFallback implements UserFeignClient{
public User findById(Long id) {
User user = new User();
user.setId(-1L);
user.setUsername("默认用户");
return user;
}
}

由代码可知,只需使用@FeignClient注解的fallback属性,就可为指定名称的Feign客户添加回退。

测试

启动microservice-discovery-eureka.

启动microservice-provider-user.

启动microservice-consumer-movie-feign-hystrix-fallback.

访问http://localhost:8082/user/1,可正常获得结果。

{"id":1,"username":"account1","name":"张三","age":20,"balance":98.23}

停止microservice-provider-user.

再次访问http://localhost:8082/user/1,可获得如下结果。说明当用户微服务不可用时,进入了回退的逻辑。

{"id":-1,"username":"默认用户","name":null,"age":null,"balance":null}

补充:在springcloud Dalston之前的版本中,Feign默认开启Hystrix支持,无需设置feign.hystrix.enabled=true.从springcloud Dalston版本开始,Feign的Hystrix支持默认关闭,需要手动设置开启。

由于代码过于简单,这里就不提交源码了。

springcloud(九)-Feign使用Hystrix的更多相关文章

  1. springcloud(九):熔断器Hystrix和Feign的应用案例

    因为 feign 中已经支持了 Hystrix ,所以在 Feign 中使用 Hystrix 时,不需要导包,也不需要在入口类上面增加额外的注解:  Feign 虽然支持了 Hystrix ,但是默认 ...

  2. springcloud(九):熔断器Hystrix和Feign的全套应用案例(二)

    一.. 创建Eureka-Server 服务中心项目 1. 创建Eureka-Server 服务中心项目架构如下 2. pom.xml <dependencies> <depende ...

  3. 第八章 SpringCloud之Feign、Hystrix结合使用

    #这个章节主要是针对Hystrix的使用,因为Feign的章节在上一节已经实现了,整个代码也是在上一个章节的基础上修改的 ##################Hystrix一个简单Demo实现#### ...

  4. SpringCloud 在Feign上使用Hystrix(断路由)

    SpringCloud  在Feign上使用Hystrix(断路由) 第一步:由于Feign的起步依赖中已经引入了Hystrix的依赖,所以只需要开启Hystrix的功能,在properties文件中 ...

  5. springcloud微服务实战:Eureka+Zuul+Feign/Ribbon+Hystrix Turbine+SpringConfig+sleuth+zipkin

    相信现在已经有很多小伙伴已经或者准备使用springcloud微服务了,接下来为大家搭建一个微服务框架,后期可以自己进行扩展.会提供一个小案例: 服务提供者和服务消费者 ,消费者会调用提供者的服务,新 ...

  6. 小D课堂 - 新版本微服务springcloud+Docker教程_5-04 feign结合hystrix断路器开发实战下

    笔记 4.Feign结合Hystrix断路器开发实战<下>     简介:讲解SpringCloud整合断路器的使用,用户服务异常情况     1.feign结合Hystrix       ...

  7. 小D课堂 - 新版本微服务springcloud+Docker教程_5-03 feign结合hystrix断路器开发实战上

    笔记 3.Feign结合Hystrix断路器开发实战<上>     简介:讲解SpringCloud整合断路器的使用,用户服务异常情况 1.加入依赖          注意:网上新旧版本问 ...

  8. SpringCloud Feign对Hystrix(断路由)的支持

    第一步:首先开启Feign对Hystrix的支持,在properties文件中添加以下配置: feign.hystrix.enabled=true. 第二步:在上一篇Feign的基础上添加Hystri ...

  9. springcloud(七) feign + Hystrix 整合 、

    之前几章演示的熔断,降级 都是 RestTemplate + Ribbon 和 RestTemplate + Hystrix  ,但是在实际开发并不是这样,实际开发中都是 Feign 远程接口调用. ...

随机推荐

  1. firstpage 2015/5/21

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="firstPage.aspx ...

  2. 现在有很多第三方的SDK来做直播,那么我们改选择哪一种?

    现在大部分的都会借助第三方的直播技术,这样可以保证直播的质量,趣拍直播就很不错,SDK很好集成,芒果直播也在用.下面来分析一下趣拍直播的一些心得. 如何快速搭建一个完整的手机直播系统 在这个直播如火如 ...

  3. console.dir(someObject);

    <script type="text/javascript"> function test(){ var array = [{"id":1},{&q ...

  4. nohup、&、setsid、fork和fg、bg究竟有啥区别?

    目录 目录 1 1. 名词解释 1 2. 什么是守护进程? 2 2.1. 后台运行 2 2.2. 解释关系 2 3. 以"&"方式运行有何问题? 2 4. fork 2 5 ...

  5. .NET基础 (11)类型的基类System.Object

    类型的基类System.Object1 是否存在不继承自System.Object类型的类2 在System.Object中定义的三个比较方法有何异同3 如何重写GetHashCode方法 类型的基类 ...

  6. shell 脚本 实现随机数

    现在我想要1~39之间的随机数该怎么做呢? date +%N   显示当前时间的纳秒   可以把这个数用来做随机数 但我只想要1~39的随机数,该怎么办呢 #! /bin/bash # echo $( ...

  7. Spring 之 AOP

    面向方面的编程,即 AOP,是一种编程技术,它允许程序员对横切关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化.AOP 的核心构造是方面, 它将那些影响多个类的行为封装到可重用的模块 ...

  8. 注解Annotation补充介绍

    摘抄http://www.cnblogs.com/peida/archive/2013/04/23/3036035.html 什么是注解(Annotation): Annotation(注解)就是Ja ...

  9. svn自动更新服务器最新代码

    1.很简单打开dos界面 cd到svn exe目录下,运行 cd C:\Program Files\TortoiseSVN\bin    --svn安装目录(作者使用时TortoiseSVN客户端,其 ...

  10. Pi 实现VLC网络视频监控

    安装摄像头 将Pi的原装摄像头安装在pi上面 ssh连接pi 通过xshell或者putty等工具连接ssh 安装VLC $ sudo apt-get update $ sudo apt-get in ...