Hystrix 源码解析 —— 执行命令方式
来源:互联网 发布:什么是excel数据透视表 编辑:程序博客网 时间:2024/05/22 14:14
摘要: 原创出处 http://www.iocoder.cn/Hystrix/command-execute-mode/ 「芋道源码」欢迎转载,保留摘要,谢谢!
本文主要基于 Hystrix 1.5.X 版本
- 1. 概述
- 2. 实现
- 3. BlockingObservable
- 666. 彩蛋
1. 概述
本文主要分享 Hystrix 执行命令方法。
建议 :对 RxJava 已经有一定的了解的基础上阅读本文。
在官方提供的示例中,我们看到 CommandHelloWorld 通过继承 HystrixCommand 抽象类,有四种调用方式:
#execute()
同步调用,返回直接结果#queue()
异步调用,返回 java.util.concurrent.Future
#observe()
异步调用,返回 rx.Observable
。向 Observable 注册 rx.Subscriber
处理结果#toObservable()
未调用,返回 rx.Observable
。向 Observable 注册 rx.Subscriber
处理结果- 第四种方式,点击
#testToObservable()
查看笔者补充的示例。
推荐 Spring Cloud 书籍:
- 请支持正版。下载盗版,等于主动编写低级 BUG 。
- 程序猿DD —— 《Spring Cloud微服务实战》
- 周立 —— 《Spring Cloud与Docker微服务架构实战》
- 两书齐买,京东包邮。
2. 实现
#toObservable()
方法 :未做订阅,返回干净的 Observable 。这就是为什么上文说“未调用” 。#observe()
方法 :调用#toObservable()
方法的基础上,向 Observable 注册rx.subjects.ReplaySubject
发起订阅 。- ReplaySubject 会发射所有来自原始 Observable 的数据给观察者,无论它们是何时订阅的。感兴趣的同学可以阅读 《ReactiveX/RxJava文档中文版 —— Subject》 。
#queue()
方法 :调用#toObservable()
方法的基础上,调用:Observable#toBlocking()
方法 :将 Observable 转换成阻塞的rx.observables.BlockingObservable
。BlockingObservable#toFuture()
方法 :返回可获得#run()
抽象方法执行结果的 Future 。#run()
方法 :子类实现该方法,执行正常的业务逻辑。- BlockingObservable 在 「3. BlockingObservable」 详细解析。
#execute()
方法 :调用#queue()
方法的基础上,调用Future#get()
方法,同步返回#run()
的执行结果。整理四种调用方式如下:
FROM 《【翻译】Hystrix文档-实现原理》
3. BlockingObservable
本小节为拓展内容,源码解析 RxJava ( 非 Hystrix ) 的 rx.observables.BlockingObservable
的实现,所以你可以选择:
- 1 ) 跳过本小节,不影响对本文的理解。
- 2 ) 选择阅读 《ReactiveX/RxJava文档中文版 —— 阻塞操作》 ,理解 BlockingObservable 的原理。
- 3 ) 选择阅读本小节,理解 BlockingObservable 的原理以及实现。
《RxJava 源码解析 —— BlockingObservable》
666. 彩蛋
第一篇 Hystrix 正式的源码解析。
梳理 Hystrix 的源码还是蛮痛苦的,主要是因为对 RxJava 不够熟悉。
胖友,分享一波朋友圈可好!
PREVIOUS:
Hystrix 源码解析 —— 执行结果缓存
NEXT:
Hystrix 源码解析 —— 调试环境搭建
Hystrix 源码解析 —— 调试环境搭建
文章目录
- 概述
- 实现
- BlockingObservable
- 彩蛋
阅读全文
0 0
- 熔断器 Hystrix 源码解析 —— 执行命令方式
- Hystrix 源码解析 —— 执行命令方式
- Hystrix 源码解析 —— 命令合并执行
- 熔断器 Hystrix 源码解析 —— 命令执行(一)之正常执行逻辑
- 熔断器 Hystrix 源码解析 —— 命令执行(二)之执行隔离策略
- Hystrix 源码解析 —— 命令执行(一)之正常执行逻辑
- Hystrix 源码解析 —— 命令执行(二)之执行隔离策略
- Hystrix 源码解析 —— 命令执行(三)之执行超时
- 熔断器 Hystrix 源码解析 —— 命令执行(三)之执行超时
- 熔断器 Hystrix 源码解析 —— 执行结果缓存
- Hystrix 源码解析 —— 执行结果缓存
- Hystrix 源码解析 —— 断路器 HystrixCircuitBreaker
- Hystrix 源码解析 —— 请求执行(四)之失败回退逻辑
- 熔断器 Hystrix 源码解析 —— 请求执行(四)之失败回退逻辑
- 熔断器 Hystrix 源码解析 —— 调试环境搭建
- Hystrix源码解析 —— 调试环境搭建
- UiAutomator系列——Appium Android Bootstrap源码分析之命令解析执行(008)
- Linux基础—source、点(.)和sh命令执行脚本的方式解析
- 深入分析C++中char * 和char []的区别
- MVC全局登录验证——Action全局过滤器
- Protocol Buffer序列化对比Java序列化.
- 做程序员压力山大,很多人都快疯了
- 数据结构第十章 排序 总结
- Hystrix 源码解析 —— 执行命令方式
- Java的三大特性
- 1014. 福尔摩斯的约会 (20)
- [poj1269]:Intersecting Lines
- java序列化反序列化深入探究
- 支付宝pc网页支付
- 普通索引和唯一索引的区别、性能差异,以及其他索引简介
- 身份管理系列之---入门
- VUE2.0父子组件以及非父子组件通信传参详解