Netflix Hystrix @HystrixProperty 注解

点击下载教程项目代码:netflix_hystrix_demo.zip

@HystrixProperty 注解是 Hystrix 框架中用于为 @HystrixCommand 注解所标注的方法或类提供更细粒度配置属性的注解。

@HystrixProperty 注解允许开发人员在使用 @HystrixCommand 注解时,针对具体的方法或类,精确地定制 Hystrix 命令的各种行为和参数,从而更好地满足不同业务场景下的需求,实现对熔断器、线程池、超时时间等功能的个性化配置。

常用属性

name

指定要配置的 Hystrix 属性的名称,其取值对应于 Hystrix 框架中预定义的各种配置属性名,如:

  • execution.isolation.thread.timeoutInMilliseconds 主要用于设置在 Hystrix 命令执行时,线程隔离模式下的超时时间(单位是毫秒)。

  • circuitBreaker.requestVolumeThreshold  用于确定在一个滚动窗口内,开启断路器之前必须达到的最小请求数量。

注意,要查看更多属性,点击查看“Netflix Hystrix 常用属性”。

value

设置对应属性的值,根据 name 属性所指定的不同属性,其取值类型和范围也有所不同。例如,对于 execution.isolation.thread.timeoutInMilliseconds 属性,其值应为表示时间的整数值,单位为毫秒;而对于 circuitBreaker.requestVolumeThreshold,其值应为表示请求数量的整数值。

使用示例

以下是一个使用 @HystrixProperty 注解的示例,展示了如何为 @HystrixCommand 标注的方法配置超时时间和熔断器请求阈值:

@Service
public class MyService {

    @HystrixCommand(fallbackMethod = "fallbackMethod", commandProperties = {
            @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "1500"),
            @HystrixProperty(name = "circuitBreaker.requestVolumeThreshold", value = "5")
    })
    public String myMethod() throws InterruptedException {
        // 模拟一个可能会超时的方法调用
    }

    public String fallbackMethod() {
        return "降级结果";
    }
}

在上述示例中,myMethod 方法使用了 @HystrixCommand 注解,并通过 commandProperties 属性配置了两个 @HystrixProperty 注解。其中:

  • 第一个 @HystrixProperty 将方法的超时时间设置为 1500 毫秒。

  • 第二个 @HystrixProperty 将熔断器的请求阈值设置为 5。

这意味着如果 myMethod 方法在 1500 毫秒内未执行完成,将会触发超时并执行降级方法 fallbackMethod;并且当该方法的请求失败次数达到 5 次时,熔断器将会打开,后续请求将直接执行降级方法,直到熔断器状态恢复。

注意:当在不同的地方对同一 Hystrix 属性进行配置时,需要注意配置的优先级。一般来说,方法级别的配置会覆盖类级别和全局级别的配置,而类级别的配置会覆盖全局级别的配置。


说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号