zoukankan      html  css  js  c++  java
  • springcloud feign增加熔断器Hystrix

    1.依赖

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
    </dependency>

    2.springboot启动类上不需要额外加注解,feignclient注解默认支持hystrix

    @EnableFeignClients  //1.支持Hystrix和他的fallback  2.支持ribbon 的负载均衡  3.启动时会进行包扫描,扫描所有带@FeignClient的类并进行处理

    3.配置增加

    #开启熔断
    feign.hystrix.enabled=true
    #默认超时时间
    hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=120000 
    #特定feign的超时时间
    hystrix.command.MqSendFeign#sendMq(MqMessage).execution.isolation.thread.timeoutInMilliseconds=1000

    4.feign客户端注解中fallback指定熔断处理类,需要知道具体调用失败原因可以使用fallbackFactory

    feign

    @FeignClient(name = "test",fallback = MqSendFeignFallback.class)
    //@FeignClient(name = "test",fallbackFactory = MqsendFeignFallbackFactory.class) //fallbackFactory可以获取调用失败原因
    public interface MqSendFeign {
    
        @PostMapping("/ss/common/sendMq")
        Result sendMq(@RequestBody @Valid MqMessage mqMessage);
    
    }

    fallback

    @Slf4j
    @Component
    public class MqSendFeignFallback implements MqSendFeign {
    
        @Override
        public Result sendMq(MqMessage mqMessage) {
            log.info("MqSendFeignFallback error");
            return new Result();
        }
    }

    fallbackFactory

    @Slf4j
    @Component
    public class MqsendFeignFallbackFactory implements FallbackFactory<MqSendFeign> {
    
        @Override
        public MqSendFeign create(Throwable throwable) {
            return new MqSendFeign() {
                @Override
                public Result sendMq(MqMessage mqMessage) {
                    log.error("MqsendFeignFallbackFactory error",throwable);
                    return new Result();
                }
            };
        }
    }
  • 相关阅读:
    Socket实现简易聊天室,Client,Server
    自定义异常案例
    异常处理的常见方法
    创建一个测试类,测试异常的抛出,异常的抛出处理案例
    Exception,异常处理操作try{}catch(XXXException e){}finally{}
    使用PrintWriter完成写操作 ,实现简易记事本工具
    iOS 面试
    ios面试
    ios 面试基础问题
    iOS 面试 runloop
  • 原文地址:https://www.cnblogs.com/liuboyuan/p/12010127.html
Copyright © 2011-2022 走看看