1、Hystrix参数配置文档 

2、Hystrix参数配置示例

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController; import com.mimaxueyuan.consumer.turbine.service.MyService;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty;
import com.netflix.hystrix.contrib.javanica.conf.HystrixPropertiesManager; @RestController
public class HystrixController { @Autowired
private MyService myService; /**
* @HystrixCommand由名为“javanica”的Netflix contrib库提供 。
* Spring Cloud在连接到Hystrix断路器的代理中使用该注解自动包装Spring bean。
* 断路器计算何时打开和关闭电路,以及在发生故障时应该做什么。
*
* @author Kevin
* @Title: get
* @param id
* @return
* @return: String
*/
@GetMapping("/get1/{id}")
@HystrixCommand(fallbackMethod = "getError")
public String get1(@PathVariable String id) {
try {
System.out.println(Thread.currentThread().getName()+":get1 before sleep 5s....");
Thread.sleep(1000 * 5);
System.out.println(Thread.currentThread().getName()+":get1 after sleep 5s....");
} catch (InterruptedException e) {
e.printStackTrace();
}
return "kevin.get1." + id;
} /**
* 配置Hystrix隔离策略,默认为THREAD,隔离策略分为THREAD、SEMAPHORE两种
*
* execution.isolation.strategy 默认为THREAD
*
* @param id
* @return
* @author lynch
*/
@GetMapping("/get2/{id}")
@HystrixCommand(fallbackMethod = "getError", commandProperties = {
// @HystrixProperty(name=HystrixPropertiesManager.EXECUTION_ISOLATION_STRATEGY, value="THREAD")
@HystrixProperty(name = HystrixPropertiesManager.EXECUTION_ISOLATION_STRATEGY, value = "SEMAPHORE") })
public String get2(@PathVariable String id) {
try {
System.out.println(Thread.currentThread().getName()+":get2 before sleep 5s....");
Thread.sleep(1000 * 5);
System.out.println(Thread.currentThread().getName()+":get2 after sleep 5s....");
} catch (InterruptedException e) {
e.printStackTrace();
}
return "kevin.get2." + id;
} /**
* 设置HystrixCommand的执行是否在超时发生时被中断。使用线程隔离时,是否对命令执行超时的线程调用中断(Thread.interrupt())操作
*
* execution.isolation.thread.interruptOnTimeout 参数,默认为true
*
* @param id
* @return
* @author lynch
*/
@GetMapping("/get3/{id}")
@HystrixCommand(fallbackMethod = "getError",commandProperties= {
//设置超时的时候不中断线程,默认为true
@HystrixProperty(name=HystrixPropertiesManager.EXECUTION_ISOLATION_THREAD_INTERRUPT_ON_TIMEOUT,value="false")
})
public String get3(@PathVariable String id) {
try {
System.out.println(Thread.currentThread().getName()+":get3 before sleep 5s....");
Thread.sleep(1000 * 5);
System.out.println(Thread.currentThread().getName()+":get3 after sleep 5s....");
} catch (InterruptedException e) {
e.printStackTrace();
}
return "kevin.get3." + id;
} /**
* 设置调用线程产生的HystrixCommand.getFallback()方法的允许最大请求数目。 如果达到最大并发数目,后续请求将会被拒绝,如果没有实现回退,则抛出异常。
* (这里需要注意一点,这个变量的命名不是很规范,它实际上对THREAD和SEMAPHORE两种隔离策略都生效)
*
* fallback.isolation.semaphore.maxConcurrentRequests默认为10
*
* @param id
* @return
* @author lynch
*/
@GetMapping("/get4/{id}")
@HystrixCommand(fallbackMethod = "getError",commandProperties= {
@HystrixProperty(name = HystrixPropertiesManager.EXECUTION_ISOLATION_STRATEGY, value = "SEMAPHORE"),
@HystrixProperty(name=HystrixPropertiesManager.EXECUTION_ISOLATION_SEMAPHORE_MAX_CONCURRENT_REQUESTS,value="1")
})
public String get4(@PathVariable String id) {
try {
System.out.println(Thread.currentThread().getName()+":get4 before sleep 5s....");
Thread.sleep(1000 * 5);
System.out.println(Thread.currentThread().getName()+":get4 after sleep 5s....");
} catch (InterruptedException e) {
e.printStackTrace();
}
return "kevin.get4." + id;
} /**
* 设置HystrixCommand的执行是否有超时限制。
*
* execution.timeout.enabled 默认为true, 是否超时
*
* @param id
* @return
*/
@GetMapping("/get5/{id}")
@HystrixCommand(fallbackMethod = "getError",commandProperties= {
@HystrixProperty(name=HystrixPropertiesManager.EXECUTION_TIMEOUT_ENABLED,value="false")
})
public String get5(@PathVariable String id) {
try {
System.out.println(Thread.currentThread().getName()+":get5 before sleep 5s....");
Thread.sleep(1000 * 5);
System.out.println(Thread.currentThread().getName()+":get5 after sleep 5s....");
} catch (InterruptedException e) {
e.printStackTrace();
}
return "kevin.get5." + id;
} /**
* 设置调用者等待命令执行的超时限制,超过此时间,HystrixCommand被标记为TIMEOUT,并执行回退逻辑。
* 注意:超时会作用在HystrixCommand.queue(),即使调用者没有调用get()去获得Future对象。
*
* execution.isolation.thread.timeoutInMilliseconds 默认为1000
*
* @param id
* @return
* @author lynch
*/
@GetMapping("/get6/{id}")
@HystrixCommand(fallbackMethod = "getError",commandProperties= {
@HystrixProperty(name=HystrixPropertiesManager.EXECUTION_ISOLATION_THREAD_TIMEOUT_IN_MILLISECONDS,value="6000")
})
public String get6(@PathVariable String id) {
try {
System.out.println(Thread.currentThread().getName()+":get6 before sleep 5s....");
Thread.sleep(1000 * 5);
System.out.println(Thread.currentThread().getName()+":get6 after sleep 5s....");
} catch (InterruptedException e) {
e.printStackTrace();
}
return "kevin.get6." + id;
} public String getError(String id) {
System.out.println(Thread.currentThread().getName()+":getError before ....");
myService.execute();
System.out.println(Thread.currentThread().getName()+":getError after ....");
return "超时错误,使用断路器返回" + id;
}
}

Hystrix参数配置的更多相关文章

  1. Hystrix【参数配置及缓存】

    1.常用参数说明 hystrix参数的详细配置可参照 https://github.com/Netflix/Hystrix/wiki/Configuration 下面是一些常用的配置: 配置项 默认值 ...

  2. hystrix参数使用方法

    hystrix+feign+ribbon,但是可能很多人都知道hystrix还有线程隔离,信号量隔离,等等各种参数配置,在这几就记录下hystrix的参数, 一.hystrix参数使用方法 通过注解@ ...

  3. SpringCloud系列七:Hystrix 熔断机制(Hystrix基本配置、服务降级、HystrixDashboard服务监控、Turbine聚合监控)

    1.概念:Hystrix 熔断机制 2.具体内容 所谓的熔断机制和日常生活中见到电路保险丝是非常相似的,当出现了问题之后,保险丝会自动烧断,以保护我们的电器, 那么如果换到了程序之中呢? 当现在服务的 ...

  4. Hystrix属性配置策略

    Hystrix属性配置 Command可配参数 设置隔离策略 execution.isolation.strategy = THREAD 设置超时时间 execution.isolation.thre ...

  5. Hystrix断路器配置属性解析

    HystrixCommand 配置方式 我们的配置都是基于 HystrixCommand 的,我们通过在方法上添加 @HystrixCommand 注解并配置注解的参数来实现配置,但有的时候一个类里面 ...

  6. 转:浅谈UNIX下Apache的MPM及httpd.conf配置文件中相关参数配置

    为什么要并发处理 以Apache为代表的web服务器中,如果不支持并发,则在一个客户端连接的时候,如果该客户端的任务没有处理完,其他连接的客户端将会一直处于等待状态,这事不可想象的,好像没有为什么要不 ...

  7. Spark on Yarn:任务提交参数配置

    当在YARN上运行Spark作业,每个Spark executor作为一个YARN容器运行.Spark可以使得多个Tasks在同一个容器里面运行. 以下参数配置为例子: spark-submit -- ...

  8. Production环境中iptables常用参数配置

    production环境中iptables常用参数配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我相信在实际生产环境中有很多运维的兄弟跟我一样,很少用到iptables的这个 ...

  9. Unity3D安卓打包参数配置与兼容性的关系分析

    前言 在使用Unity3D工程导出安卓安装包的时候,往往会遇到兼容性的问题,针对某些机型,要么无法打开游戏,要么会出现卡机的现象.面对这种情况,我们可以调节相关的参数来提高兼容性. 为了了解在打包时候 ...

随机推荐

  1. dfs | Security Badges

    Description You are in charge of the security for a large building, with n rooms and m doors between ...

  2. MFC里面解析json文件格式

    CString strTemp; //CString ->string; string stringMsg = (LPCSTR)(CStringA)strTemp; //string -> ...

  3. PHP-循环结构-数组

    今日目标: (1)循环结构 —— do..while.. —— 掌握 (2)循环结构 —— for —— 重点 (3)数组 —— 重点 1.PHP中的循环结构 —— do..while... do: ...

  4. explain 类型分析

    all 全表扫描 ☆ index 索引全扫描 ☆☆ range 索引范围扫描,常用语<,<=,>=,between等操作 ☆☆☆ ref 使用非唯一索引扫描或唯一索引前缀扫描,返回单 ...

  5. VS2015离线安装NuGet Package

    在一些情况下,VS2015直接安装NuGet Package的时候,速度异常缓慢: 所以还是考虑直接离线安装: Step1: 下载相应的Package https://www.nuget.org/ 然 ...

  6. CentOS操作系统防火墙添加例外端口

    http://blog.csdn.net/inrgihc/article/details/63392004 CentOS6与CentOS7添加防火墙例外端口的命令不用,需单独来说: (1)CentOS ...

  7. 使用TheFolderSpy监控文件夹的变化-邮件通知

    一.概述 当我们的文档或者代码文件发布在公网.共享文件夹中,其他用户具备访问或修改的权限时,就存在文档被覆盖或删除的分享.另外一个典型的场景,发布在Web服务器上的网页文件,在网站版本不更新的时间,服 ...

  8. ASP.NET MVC下使用AngularJs语言(四):$window.alert

    判断文本框是否有填写,没有填写使用angularjs的$window.alert来提示用户. 创建一个ASP.NET MVC控制器: 接下来是准备一个angularjs的控制器: pilotApp.c ...

  9. 简单的异步函数async/await例子

    function resolveAfter2Seconds(x){ return new Promise(resolve => { setTimeout(() => { resolve(x ...

  10. 用HTML5 video标签插入视频,在谷歌浏览器上播放视频时,右下角显示的下载按钮怎么去掉

    使用H5的video标签可以直接插入视频,一般在浏览器效果如下图显示: 但有时在谷歌浏览器上显示,会遇到右下角有下载按钮.如果项目要求去掉这个下载按钮,怎么办呢?如下图显示: 分析: 经本人测试,是谷 ...