zoukankan      html  css  js  c++  java
  • 在订单服务中使用Hystrix进行熔断设置

    使用Hystrix熔断(上)

    在一个分布式系统里,一个服务依赖多个服务,可能存在某个服务调用失败,

            比如超时、异常等,如何能够保证在一个依赖出问题的情况下,不会导致整体服务失败,

     

    使用实现降级

    1、复制项目并修改为新项目

        copy orderserver 为orderserverhystrix

            在项目右键修改名称orderserver为orderserverhystrix

            pom中修改artifactId为orderserverhystrix

            修改name为orderserverhystrix

            修改包名称luhq7.xdclass.orderserver为luhq7.xdclass.orderserverhystrix

            修改各种类名称增加hystrix

            在运行左侧的edit application中修改名称

    2、增加依赖到pom文件

         <dependency>

    <groupId>org.springframework.cloud</groupId>

    <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>

    </dependency>

    3、启动类增加注解

            @EnableCircuitBreaker

            

            关注注解@SpringCloudApplication,包含以下注解

                @Target({ElementType.TYPE})

                @Retention(RetentionPolicy.RUNTIME)

                @Documented

                @Inherited

                @SpringBootApplication

                @EnableDiscoveryClient

                @EnableCircuitBreaker

    4、API接口编码实战

         熔断-》降级

     

            1)最外层api(controller包中)使用,好比异常处理(网络异常,参数或者内部调用问题)

                api方法上增加 @HystrixCommand(fallbackMethod = "saveOrderFail")

                    

                    save API中修改为

                     Map<String,Object> msg=new HashMap<>();

                                msg.put("code",0);

                                msg.put("msg",productOrderHystrixService.save(userId,productId));

                                return msg;

     

                编写fallback方法实现,方法签名一定要和api方法签名一致(注意点!!!)

     

                        private Object saveOrderFail(int userId,int productId)

                        {

                            Map<String,Object> msg=new HashMap<>();

                            msg.put("code",-1);

                            msg.put("msg","抢购人数太多!您被挤出来了,请稍等重试!");

                            return msg;

     

                        }

    5、为了体现熔断,将product-server停止后再访问下

    http://192.168.136.128:8769/api/v1/orderHystrix/save?userId=2&productId=2

     

    ok

  • 相关阅读:
    JProfiler9安装 监控Tomcat
    linux 大量的TIME_WAIT解决办法(转)
    C2 CompilerThread0 如果抓到的java线程dump里占用CPU最高的线程是这个,99%可能是因为服务重启了
    什么是多线程,锁,死锁,怎么避免死锁(转)
    Jmeter BeanShell 引用变量报错jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval Parse error at line 14, column 181 : Error or number too big for integer
    小缘的游戏
    Bad Hair Day
    779A Pupils Redistribution
    Stripies
    校赛-种树
  • 原文地址:https://www.cnblogs.com/programer-xinmu78/p/10520777.html
Copyright © 2011-2022 走看看