问题描述
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。