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

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();
            }
        };
    }
}

猜你喜欢

转载自www.cnblogs.com/liuboyuan/p/12010127.html