继承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总结之多返回值命令的更多相关文章

  1. c#中 命令copy 已退出,返回值为1

    c#中重新生成时,报错:命令"copy ...... " 已退出,返回值为1.   错误截图如下: 解决办法: 点击"项目"右键--"属性" ...

  2. bash命令行返回值和展开

    bash命令行返回值和展开 标签(空格分隔): bash,命令,状态,展开 1.命令状态结果和执行结果 (1)命令执行的状态返回值,命令执行完成之后,其执行状态结果值保存于bash的特殊状态变量$?中 ...

  3. [转]Linux命令的返回值

    Linux命令的返回值 对于某些监测脚本和探测命令蛮有用的: 在 Linux 下,不管你是启动一个桌面程序也好,还是在控制台下运行命令,所有的程序在结束时,都会返回一个数字值,这个值叫做返回值,或者称 ...

  4. linux命令执行返回值(附错误对照表)

    转自:http://blog.sina.com.cn/s/blog_6739945f0100zt4b.html 在 Linux 下,不管你是启动一个桌面程序也好,还是在控制台下运行命令,所有的程序在结 ...

  5. c#中命令copy已退出,返回值为1

    c#中命令copy已退出,返回值为1 本正经的道:董姐刚才你说的修心养性其中的'修心'我 有孕在身刚好由戴梦瑶顶替了她的位置按照的指示 ╋旆呆 湎术葶页 邾箕砜笳 烦璜卿廑 奶奶个腿儿的等下次非让你 ...

  6. 分析RunTime执行命令以及得到返回值

    RunTime执行命令得到返回值 我们有在好好几篇博客里提到过RunTime,比如 JAVA之旅(二十三)--System,RunTime,Date,Calendar,Math的数学运算 Androi ...

  7. Redis的安装及命令返回值

    Linux下安装Reids : http://redis.io/download 下载最新稳定版本 wget http://download.redis.io/releases/redis-3.0.7 ...

  8. linux命令返回值的妙用

    什么是返回值 在shell终端中,你所输入的一切命令其实都有返回值,而这个返回值默认保存在"$?"中,举例看一下 [root@localhost ~]# touch [root@l ...

  9. linux命令返回值的含义

    linux命令执行后无论成功与否都有一个返回值: 如果为 0,则表示命令执行成功,其它值则表示错误, 具体的错误码含义如下: "OS error code 1: Operation not ...

随机推荐

  1. MySQL数据库时间字段按年月日显示并多字段去重查询

    应用服务长久运行,难免要导出一些统计报表. 现在有一个日志表,记录了各种日志,需要导出十月份的登录日志,要求时间按日期显示,且每天用户登陆要去重. 先看日志表的字段构成: logType等于2的是登陆 ...

  2. SpringCloud Alibaba之Nacos

    一.运行Nacos Nacos GitHub开源地址:https://github.com/alibaba/nacos Nacos 官方文档:https://nacos.io/zh-cn/docs/q ...

  3. 算法-图(1)Dijkstra求最短路径

    数组dist[],是当前求到的顶点v到顶点j的最短路径长度 数组path[]存放求到的最短路径,如path[4]=2,path[2]=3,path[3]=0,则路径{0,3,2,4}就是0到4的最短路 ...

  4. python读文件出现错误解决方法

    python读文件经常会出现 UnicodeDecodeError: 'gbk' codec can't decode byte 0xbd in position 764: illegal multi ...

  5. Java14版本特性【一文了解】

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...

  6. VMD的相关命令(转载)

    转载自:http://blog.sina.com.cn/s/blog_b48a7ac30102w6xg.html 自我学习总结: 1.打开VMD main上Extensions中的TkConsole这 ...

  7. python分支结构

    if分支 一.单分支结构 # if 表达式:#     语句块# 后续语句 # 执行流程:如果表达式结果为真,则执行语句块.否则,直接执行后续语句 二.双分支结构 # 双分支语句# if 表达式:# ...

  8. C++ int与char[]的相互转换

    C++ int与char[]的相互转换 一.itoa函数与atio函数①把int类型数字转成char类型,可以使用itoa函数. itoa函数原型: char*itoa(int value,char* ...

  9. android尺寸问题(转)

    android尺寸问题(转) (2013-01-15 16:55:36) 转载▼ 标签: 杂谈 分类: LINUX 最近公司做的项目中涉及到屏幕自适应的问题.由于做的是电视版的项目,因此屏幕自适应问题 ...

  10. 开发者的福音,LR.NET模块化代码生成器

    代码生成器,是快速开发平台的核心功能之一,是一种用来帮助缺乏经验或者时间的开发者快速生成规范代码的工具,可以在极大程度上提升开发者的工作效率, 能有效避免重复工作.但稍有经验的开发者都明白,代码生成器 ...