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. Python项目--Scrapy框架(一)

    环境 win8, python3.7, pycharm 正文 1.Scrapy框架的安装 在cmd命令行窗口执行: pip install Scrapy 即可完成Scrapy框架的安装 2. 创建Sc ...

  2. python小练习:使用循环和函数实现一个摇骰子小游戏。游戏规则如下:游戏开始,首先玩家选择Big or Small(押大小),选择完成后开始摇三个骰子,计算总值,11<=总值<=18为“大”,3<=总值<=10为“小”。然后告诉玩家猜对或者是猜错的结果。

    python小练习:使用循环和函数实现一个摇骰子小游戏.游戏规则如下:游戏开始,首先玩家选择Big or Small(押大小),选择完成后开始摇三个骰子,计算总值,11<=总值<=18为“ ...

  3. 六、maven仓库中安装没有的jar包

    举例:安装dubbo.jar Dubbox 的 jar 包并没有部署到 Maven 的中央仓库中,大家在 Maven 的中央仓库中可以查找到 Dubbo 的最终版本是 2.5.3 , 阿里巴巴解散了 ...

  4. VS中程序包错误,引用错误该如何解决

    1.找到包的文件.packages.config 对应于: 2.删除掉 packages.config 报错的项.然后再重新添加一次.就没有解决的不了的问题. 是不是很爽.....

  5. concurrent.futures模块(进程池/线程池)

    需要注意一下不能无限的开进程,不能无限的开线程最常用的就是开进程池,开线程池.其中回调函数非常重要回调函数其实可以作为一种编程思想,谁好了谁就去掉 只要你用并发,就会有锁的问题,但是你不能一直去自己加 ...

  6. Codeforces Round #486 (Div. 3) D. Points and Powers of Two

    Codeforces Round #486 (Div. 3) D. Points and Powers of Two 题目连接: http://codeforces.com/group/T0ITBvo ...

  7. elasticsearch之hello(spring data整合)

    1.书写pom.xml文件 <dependencies> <dependency> <groupId>org.springframework.data</gr ...

  8. delegate的Invoke和BeginInvoke方法

    C#中的控件和delegate委托方法都有Invoke和BeginInvoke方法,控件的这两个方法网上讲得很多, 这里就不多说了,下面讲一下delegate的Invoke和BeginInvoke方法 ...

  9. 使用 IncrediBuild 提升 VisualStudio 编译速度

    我现在有一个 100M 的代码,需要快速去编译他,我寻找了很多方法,本文记录我找到的 IncrediBuild 用于提交编译速度. 如果一个项目存在很多不相互依赖的项目,那么使用 IncrediBui ...

  10. Adobe reader multiple languages pack

    用户打开客户发过来的PDF文档,显示不正常,这是电脑的Adobe Reader缺少相关的字体. 可以从下面地址下载相对版本的字体包安装:http://supportdownloads.adobe.co ...