使用 Spring Cloud Hysterix 重试

问题描述

Cn 任何人请指导我如何在 Spring Cloud Eureka Hysterix 命令中进行重试,如下所示?另外认情况下,Spring Cloud 会在调用方法的第一次失败时中断电路吗?

请指教。

@HystrixCommand(fallbackMethod="getDataFallBack" )
    public ResponseEntity<CurrencyConversion> addConversionFactor(@RequestBody CurrencyConversion currencyConversion) throws Exception{
        log.info("in addConversionFactor ... " + currencyConversion);
        //some operations here
        return ResponseEntity.ok(currencyConversion);
    }

解决方法

Hystrix 充当断路器,不提供任何重试功能。由调用客户端来实现重试。借助 Spring Cloud,您可以使用 Spring Cloud Netflix @LoadBalanced RestTemplate(或 WebClient)或直接使用 Spring Retry

@HystrixCommand 上有几个不同的配置属性,用于控制断路器何时跳闸。此处提供了所有可用属性的完整概述:https://github.com/Netflix/Hystrix/wiki/Configuration。控制错误阈值的是circuitBreaker.errorThresholdPercentage

另请注意,不推荐使用 Spring Cloud Hystrix。如果您要创建新应用程序,则应考虑改用 Spring Cloud Circuit Breaker