spring-cloud-hystrix熔断
2016-03-02 11:10
537 查看
依赖pom
源代码
模拟服务失败的情况
浏览器调用 foo
展示 defaultFoo
熔断器是一种异常的处理机制
进一步尝试,模拟服务有时成功 有时失败的情况
插入一些日志输出,发现会先调用一下getFoo这个接口,如果出现异常则调用defaultFoo
熔断可能可以设置一些策略,在某些情况下不调用getFoo接口
启用hystrix报表
添加依赖
Application增加注解
在浏览器中输入
并填入地址,可以进入hystrix-dashboard界面
测试发现如果多次快速调用foo接口 并且Foo接口抛出异常
断路器会变为open状态,此时程序不会尝试调用实际的getFoo方法,而是直接调用defaultFoo
过一段时间之后 circuit会自动闭合
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-netflix</artifactId> <version>1.0.7RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId> </dependency> <dependencies>
源代码
@RestController @SpringBootApplication @EnableCircuitBreaker public class Application extends SpringBootServletInitializer{ @AutoWired FooService fooService; @RequestMapping("/foo") public String foo(){ return fooService.getFoo(); } public static void main(String[] args){ SpringApplication.run(Application.class,args); } }
模拟服务失败的情况
@Component public FooService{ @HystrixCommand(fallbackMethod="defaultFoo") public static String getFoo() throws Exception { throw new Exception(); } public static String defaultFoo(){ return "defaultFoo"; } }
浏览器调用 foo
展示 defaultFoo
熔断器是一种异常的处理机制
进一步尝试,模拟服务有时成功 有时失败的情况
@Component public FooService{ static int count=0; @HystrixCommand(fallbackMethod="defaultFoo") public static String getFoo() throws Exception { count++; count%=20; System.out.println("realGetFoo"); if(count<10){ throw new Exception(); }else{ return "foo"; } } public static String defaultFoo(){ return "defaultFoo"; } }
插入一些日志输出,发现会先调用一下getFoo这个接口,如果出现异常则调用defaultFoo
熔断可能可以设置一些策略,在某些情况下不调用getFoo接口
启用hystrix报表
添加依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-netflix-hystrix-dashboard</artifactId> </dependency>
Application增加注解
@EnableHystrixDashBoard
在浏览器中输入
http://host:port/hytrix
并填入地址,可以进入hystrix-dashboard界面
测试发现如果多次快速调用foo接口 并且Foo接口抛出异常
断路器会变为open状态,此时程序不会尝试调用实际的getFoo方法,而是直接调用defaultFoo
过一段时间之后 circuit会自动闭合
相关文章推荐
- Java学习笔记
- Eclipse导入Hadoop源码
- MyEclipse修改
- java泛型
- java第四天
- struts2 - View页面中获取Action的成员变量
- java读取properties的工具类PropertiesUtil
- java中的for 循环的几种用法解析
- 通过Java Api与HBase交互(转)
- myeclipse提交到github出现错误 non-fast-forward
- springmvc学习
- HBase Java API类介绍
- eclipse下的插件添加
- java多线程-深入分析ConcurrentHashMap
- Java中多态的粗浅见解
- Dagger 2 项目配置错误: error: the import javax.annotation.Generated cannot be resolved
- Zookeeper Api(java)入门与应用(转)
- Spring MVC 文件下载
- Java读取properties配置文件中文乱码解决方案--谷营中西科技软件园---zdd
- spring小知识记载