springcloud(九)-Feign使用Hystrix
前言
上一篇我们使用注解@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的更多相关文章
- springcloud(九):熔断器Hystrix和Feign的应用案例
因为 feign 中已经支持了 Hystrix ,所以在 Feign 中使用 Hystrix 时,不需要导包,也不需要在入口类上面增加额外的注解: Feign 虽然支持了 Hystrix ,但是默认 ...
- springcloud(九):熔断器Hystrix和Feign的全套应用案例(二)
一.. 创建Eureka-Server 服务中心项目 1. 创建Eureka-Server 服务中心项目架构如下 2. pom.xml <dependencies> <depende ...
- 第八章 SpringCloud之Feign、Hystrix结合使用
#这个章节主要是针对Hystrix的使用,因为Feign的章节在上一节已经实现了,整个代码也是在上一个章节的基础上修改的 ##################Hystrix一个简单Demo实现#### ...
- SpringCloud 在Feign上使用Hystrix(断路由)
SpringCloud 在Feign上使用Hystrix(断路由) 第一步:由于Feign的起步依赖中已经引入了Hystrix的依赖,所以只需要开启Hystrix的功能,在properties文件中 ...
- springcloud微服务实战:Eureka+Zuul+Feign/Ribbon+Hystrix Turbine+SpringConfig+sleuth+zipkin
相信现在已经有很多小伙伴已经或者准备使用springcloud微服务了,接下来为大家搭建一个微服务框架,后期可以自己进行扩展.会提供一个小案例: 服务提供者和服务消费者 ,消费者会调用提供者的服务,新 ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_5-04 feign结合hystrix断路器开发实战下
笔记 4.Feign结合Hystrix断路器开发实战<下> 简介:讲解SpringCloud整合断路器的使用,用户服务异常情况 1.feign结合Hystrix ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_5-03 feign结合hystrix断路器开发实战上
笔记 3.Feign结合Hystrix断路器开发实战<上> 简介:讲解SpringCloud整合断路器的使用,用户服务异常情况 1.加入依赖 注意:网上新旧版本问 ...
- SpringCloud Feign对Hystrix(断路由)的支持
第一步:首先开启Feign对Hystrix的支持,在properties文件中添加以下配置: feign.hystrix.enabled=true. 第二步:在上一篇Feign的基础上添加Hystri ...
- springcloud(七) feign + Hystrix 整合 、
之前几章演示的熔断,降级 都是 RestTemplate + Ribbon 和 RestTemplate + Hystrix ,但是在实际开发并不是这样,实际开发中都是 Feign 远程接口调用. ...
随机推荐
- Buffer Pool--SQL Server:Buffer Manager 对象
--============================================================== --参考链接:http://technet.microsoft.com ...
- Python学习之全局变量与global
刚学习Python,遇到个问题:为什么有些定义在函数外的变量可以直接被函数使用,有些就不行呢? 如: count = 0 def change(): count += 1 change() # 报错 ...
- Sql语法高级应用之五:使用存储过程实现对明细多层次统计
前言 前面章节我们讲到了存储过程的基础用法,本章则将一个在项目中实际应用的场景. 在项目中经常会存在这样的需求,例如需要对明细列表进行按组.按级别.按人等进行统计,如果在附带列表的查询条件,又如何实现 ...
- 云捕Redis实战
本文由作者余宝虹授权网易云社区发布. Redis是一个支持丰富数据结构的分布式key-value系统,Redis在云捕系统的地位相当重要,碰到的问题也比较多,最近才解决了一个遗留的老大难问题.由于15 ...
- dubbo事件通知机制(1)
此文已由作者岳猛授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. dubbo事件通知机制:http://dubbo.io/books/dubbo-user-book/demos ...
- dockerfile构建redis
-------------------------------------------------------------
- Oracle数据库01
常用函数 COUNT(*):统计所有的数据量,没有过滤功能 COUNT(字段):统计出指定字段不为null的数据量,有过滤功能 COUNT(DISTINCT 字段):统计指定字段不为空并且去掉重复数据 ...
- unix网络编程卷2:进程间通信
管道没有名字,只能有亲缘关系使用. FIFO也叫有名管道,有名所以没有了这个限制. 管道提供一个单向数据流,创建函数返回两个文件描述符.一个用来读,一个用来写. 宏S_ISFIFO可用于确定一个描述符 ...
- django系列2--下载安装、项目创建、配置、启动
Django下载与安装 一.使用pip: 1.下载: django的官网下载页:https://www.djangoproject.com/download/ 1.使用pip安装, 在cmd命令行中输 ...
- Eclipse导出JAR过程
Eclipse是一款免费的JAVA开发环境,被各个软件公司使用,可以说是目前使用最多的JAVA开发工具了,网址:http://www.eclipse.org 下面演示如何建立JAVA工程和导出JAR: ...