Springcloud 整合Hystrix 断路器,支持Feign客户端调用
时间:2019-08-21
本文章向大家介绍Springcloud 整合Hystrix 断路器,支持Feign客户端调用,主要包括Springcloud 整合Hystrix 断路器,支持Feign客户端调用使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1,在这篇博文中,已经大致说过了Springcloud服务保护框架 Hystrix在服务隔离,服务降级,以及服务熔断中的使用
https://www.cnblogs.com/pickKnow/p/11250374.html
2,声明式的调用hystrix,也是很重要的,以及用整合feign 客户端
maven:
<!-- hystrix断路器 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency>
3,使用@HystrixCommand
//@HystrixCommand 默认开启服务隔离,是以线程池方式
//@HystrixCommand 默认开启服务降级,fallbackMethod 方法名就是服务的降级名称
//@HystrixCommand 默认开启服务熔断机制
//@Hystrix 要禁止超时时间,默认1 秒,如果没有即使响应,会走业务逻辑,但是也会走服务降级方法,所以要禁止超时时间
@RestController public class MemberServiceImpl { @Autowired private OrderServiceFeign orderServiceFeign; //@HystrixCommand 默认开启服务隔离,是以线程池方式 //@HystrixCommand 默认开启服务降级,fallbackMethod 方法名就是服务的降级名称 //@HystrixCommand 默认开启服务熔断机制 //@Hystrix 要禁止超时时间,默认1 秒,如果没有即使响应,会走业务逻辑,但是也会走服务降级方法,所以要禁止超时时间 @HystrixCommand(fallbackMethod = "orderServiceFallback") @RequestMapping("/getOrder") public Order getOrder(String orderId) { System.out.println("orderToUserInfo:" + "当前线程池名称:" + Thread.currentThread().getName()); return orderServiceFeign.getOrder(orderId); } @RequestMapping("/orderServiceFallback") public String orderServiceFallback() { return "服务器繁忙,请稍后重试"; } }
4,配置文件
###服务启动端口号
server:
port: 8000
###服务名称(服务注册到eureka名称)
spring:
application:
name: app-aiyuesheng-member
###服务注册到eureka地址
eureka:
client:
service-url:
defaultZone: http://localhost:8100/eureka
###因为该应用为注册中心,不会注册自己
register-with-eureka: true
###是否需要从eureka上获取注册信息
fetch-registry: true
###设置feign客户端超时时间
ribbon:
###指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间。
ReadTimeout: 5000
###指的是建立连接后从服务器读取到可用资源所用的时间。
ConnectTimeout: 5000
feign:
hystrix:
enabled: true
#### hystrix禁止服务超时时间
hystrix:
command:
default:
execution:
timeout:
enabled: false
5,在启动类上加上使用Hystrix的注解
@SpringBootApplication @EnableEurekaClient @EnableFeignClients @EnableHystrix public class MemberApp { public static void main(String[] args) { SpringApplication.run(MemberApp.class, args); } }
原文地址:https://www.cnblogs.com/pickKnow/p/11388954.html
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- GoldenEye靶机渗透
- RBash - 受限的Bash绕过
- 【Rust日报】2020-08-10:在 Rust 中存储连续数据
- 用 Docker 打包 Node.js 程序
- 再见! JSP !
- SocketFTP多线程处理
- 面经手册 · 第4篇《HashMap数据插入、查找、删除、遍历,源码分析》
- Xray配合awvs漏洞扫描
- 无聊的MISC题解
- MISC-convert | 旋转跳跃
- MISC-多彩
- Web-高明的黑客
- CVE-2017-7529 Nginx整数溢出漏洞分析
- 【Vulnhub】pegasus
- 2019-11-20-app专项测试【Android电量】Battery Historian耗电分析