hystrix总结之多返回值命令
继承HystrixCommand实现run方法的命令只能返回单一值,Hystrix也提供了方式可以让我返回一个Observable结果,然后持续监听运行结果。
继承HystrixObservableCommand
public class HelloWorldHystrixObservableCommand extends HystrixObservableCommand{
    private String name;
    protected HelloWorldHystrixObservableCommand(String group) {
        super(HystrixCommandGroupKey.Factory.asKey(group));
        this.name = group;
    }
    @Override
    protected Observable resumeWithFallback() {
        return Observable.create(new Observable.OnSubscribe<String>() {
            public void call(Subscriber<? super String> observer) {
                observer.onNext("fallback:"+name);
            }
        });
    }
    protected Observable construct() {
        return Observable.create(new Observable.OnSubscribe<String>() {
            public void call(Subscriber<? super String> observer) {
                observer.onNext("hello world:"+name);
                observer.onCompleted();
            }
        });
    }
}
construct为需要执行的命令并返回一个Observable对象,如果执行过程中发生异常,则会触发resumeWithFallback来降级。
有两种方法执行命令:
Observable<String> s = new HelloWorldHystrixObservableCommand("Bob").observe();
Observable<String> s = new HelloWorldHystrixObservableCommand("Bob").toObserve();
执行原理与HystrixCommand相同,继承了相同的虚拟类(AbstractCommand)只是最终调用的执行方法不同。
HystrixObservableCommand默认使用SEMAPHORE模式执行。
hystrix总结之多返回值命令的更多相关文章
- c#中 命令copy 已退出,返回值为1
		
c#中重新生成时,报错:命令"copy ...... " 已退出,返回值为1. 错误截图如下: 解决办法: 点击"项目"右键--"属性" ...
 - bash命令行返回值和展开
		
bash命令行返回值和展开 标签(空格分隔): bash,命令,状态,展开 1.命令状态结果和执行结果 (1)命令执行的状态返回值,命令执行完成之后,其执行状态结果值保存于bash的特殊状态变量$?中 ...
 - [转]Linux命令的返回值
		
Linux命令的返回值 对于某些监测脚本和探测命令蛮有用的: 在 Linux 下,不管你是启动一个桌面程序也好,还是在控制台下运行命令,所有的程序在结束时,都会返回一个数字值,这个值叫做返回值,或者称 ...
 - linux命令执行返回值(附错误对照表)
		
转自:http://blog.sina.com.cn/s/blog_6739945f0100zt4b.html 在 Linux 下,不管你是启动一个桌面程序也好,还是在控制台下运行命令,所有的程序在结 ...
 - c#中命令copy已退出,返回值为1
		
c#中命令copy已退出,返回值为1 本正经的道:董姐刚才你说的修心养性其中的'修心'我 有孕在身刚好由戴梦瑶顶替了她的位置按照的指示 ╋旆呆 湎术葶页 邾箕砜笳 烦璜卿廑 奶奶个腿儿的等下次非让你 ...
 - 分析RunTime执行命令以及得到返回值
		
RunTime执行命令得到返回值 我们有在好好几篇博客里提到过RunTime,比如 JAVA之旅(二十三)--System,RunTime,Date,Calendar,Math的数学运算 Androi ...
 - Redis的安装及命令返回值
		
Linux下安装Reids : http://redis.io/download 下载最新稳定版本 wget http://download.redis.io/releases/redis-3.0.7 ...
 - linux命令返回值的妙用
		
什么是返回值 在shell终端中,你所输入的一切命令其实都有返回值,而这个返回值默认保存在"$?"中,举例看一下 [root@localhost ~]# touch [root@l ...
 - linux命令返回值的含义
		
linux命令执行后无论成功与否都有一个返回值: 如果为 0,则表示命令执行成功,其它值则表示错误, 具体的错误码含义如下: "OS error code 1: Operation not ...
 
随机推荐
- 全网最通透的Java8版本特性讲解
			
「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...
 - Macbook pro 下修改MySQL数据库密码
			
步骤: 1. 打开终端 Terminal, 找到Mysql 的安装路径,一般默认安装路径为:/usr/local/mysql-5.7.12-osx10.11-x86_64/bin [注:我安装的Mys ...
 - Java中校验身份证号合法性(真伪),获取出生日期、年龄、性别、籍贯
			
开发过程中有用的身份证号的业务场景,那么校验身份证的合法性就很重要了,另外还有通过身份证获取出生日期.年龄.性别.籍贯等信息, 下面是本人在开发中用到的关于校验身份证真伪的工具类,可以直接拿来使用,非 ...
 - 计算机网络-传输层(3)TCP协议与拥堵控制
			
TCP是因特网传输层的面向连接的可靠的运输协议. TCP被称为是面向连接的:通信双方在发送数据之前必须建立连接,连接状态只在连接的两端中维护,在沿途节点中并不维护状态. TCP连接包括:两台主机上 ...
 - 搜索会抓取网站域名的whoise信息吗
			
http://www.wocaoseo.com/thread-309-1-1.html 网站是否在信产部备案,这是不是会成为影响网站收录和排名的一个因素?百度是否会抓取域名注册人的相关whois信息吗 ...
 - 蒲公英 · JELLY技术周刊 Vol.20: Vue3 极致优化——分析 Vue3 Compiler 告诉你为什么这么快
			
蒲公英 · JELLY技术周刊 Vol.20 性能优化是一条无尽的路,我们总是可以找到各种途径去提升体验,不论是响应时间还是按需加载,亦或是根据框架或者组件有针对性的优化都会是不错的方法.如果你在使用 ...
 - ETC1
			
对纹理进行Alpha通道分离的好处 https://blog.csdn.net/u011926026/article/details/53982180 拆分贴图的Alpha通道 --对抗ETC1的原罪 ...
 - 一文吃透redis持久化,妈妈再也不担心我面试过不了!
			
持久化介绍 redis 提供了两种方式方式进行数据的持久化(将数据存储到硬盘中):第一种称为快照(snapshotting)RDB,它将某一时刻的所有数据都写入硬盘,所以快照是一次全量备份,并且存储的 ...
 - Redis数据类型读写语法
			
---字符类型的用法(语法大小写不做限制)1.创建string字符串写:SET 列名 "键值"读:get 列名特性:可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存 ...
 - leetcode刷题-67二进制求和
			
题目 给你两个二进制字符串,返回它们的和(用二进制表示). 输入为 非空 字符串且只包含数字 1 和 0. 示例 1: 输入: a = "11", b = "1" ...