• Spring整合Hystrix


    1、添加maven依赖

    <dependency>
        <groupId>com.netflix.hystrix</groupId>
        <artifactId>hystrix-core</artifactId>
        <version>1.5.18</version>
    </dependency>
    <dependency>
        <groupId>com.netflix.hystrix</groupId>
        <artifactId>hystrix-javanica</artifactId>
        <version>1.5.18</version>
    </dependency>

    2、配置切面

    <aop:aspectj-autoproxy proxy-target-class="true" />
    <bean class="com.netflix.hystrix.contrib.javanica.aop.aspectj.HystrixCommandAspect" />

    3、编写controller类,并添加注解

    @Controller
    @RequestMapping
    public class CommonController {
        /**
         * 主页
         * 
         * @return
         */
        @RequestMapping("/")
        public String home() {
            return "home.html";
        }
    
        /**
         * 配置2秒超时,超时后调用testFallback方法返回到error界面<br>
         * 当并发量比较大时,并非所有阻断或失败的请求都会走fallback方法,当处理线程忙不过来时,会直接抛出HystrixRuntimeException异常
         * 
         * @param mav
         * @param time 睡眠时间
         * @return
         */
        @HystrixCommand(groupKey = "groupTest", commandKey = "commandTest", fallbackMethod = "testFallback", commandProperties = {
                @HystrixProperty(name = "execution.timeout.enabled", value = "true"),
                @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "2000") })
        @RequestMapping("/test")
        public ModelAndView test(ModelAndView mav, @RequestParam(defaultValue = "1") int time) {
            try {
                Thread.sleep(1000 * time);
            } catch (Exception e) {
            }
            mav.setViewName("success.html");
            return mav;
        }
    
        /**
         * test访问熔断后回调页面
         * 
         * @param mav
         * @param time
         * @return
         */
        protected ModelAndView testFallback(ModelAndView mav, @RequestParam(defaultValue = "1") int time) {
            mav.setViewName("fallback.html");
            return mav;
        }
    }

    4、在webapp目录下添加fallback.html、success.html文件

    5、访问http://127.0.0.1:8080/spring-hystrix-demo/test?time=0,浏览器正常进入success.html页面;

          访问http://127.0.0.1:8080/spring-hystrix-demo/test?time=5,连接超时,后台执行testFallback方法,浏览器进入fallback.html页面。

  • 相关阅读:
    js string to int
    有的事情是无可奈何的,有的事情是能够改变的……
    拼接字符串去掉最后多余的串,JSON的遍历
    git入门
    js的闭包
    nodejs系列(二)REPL交互解释 事件循环
    nodejs系列(一)安装和介绍
    学习mongo系列(十一)关系
    学习mongo系列(十)MongoDB 备份(mongodump)与恢复(mongorerstore) 监控(mongostat mongotop)
    学习mongo系列(九)索引,聚合,复制(副本集),分片
  • 原文地址:https://www.cnblogs.com/zhi-leaf/p/10513999.html
Copyright © 2020-2023  润新知