【问题标题】:Using different Hystrix command name for metrics对指标使用不同的 Hystrix 命令名称
【发布时间】:2017-04-06 17:40:09
【问题描述】:

我正在开发一个动态创建 Hystrix 命令的系统。 HystrixCommand 只有一个实现,它接收其配置以及要在 run 方法中执行的代码 (Callable)。

调用相同远程服务的命令根据执行它们的组件具有不同的命令键,因此它们的断路器彼此独立。但是,我希望根据被调用的远程服务,将它们聚合在单个名称下的指标流中。这可能吗?

我可以看到有一个 command group 属性,我将其设置为我的远程服务名称,但 Hystrix Dashboard 似乎基于 command name 将条目分组在一起。

【问题讨论】:

    标签: hystrix


    【解决方案1】:

    这样的事情会提供您正在寻找的行为吗?

    public class NamedHystrixCommand extends HystrixCommand<Object> {
    
        private static final HystrixCommandGroupKey GROUP_KEY =
            HystrixCommandGroupKey.Factory.asKey("Host Routing");
        private static final HystrixThreadPoolProperties.Setter THREAD_POOL_PROPERTIES =
            HystrixThreadPoolProperties.Setter()
                    .withMaximumSize(100);
        private static final HystrixCommandProperties.Setter COMMAND_PROPERTIES =
            HystrixCommandProperties.Setter()
                    .withExecutionTimeoutInMilliseconds(5000)
                    .withMetricsHealthSnapshotIntervalInMilliseconds(1000);
    
        private final Callable<Object> callable;
    
        public NamedHystrixCommand(
            String metricName,
            Callable<Object> callable) {
            super(HystrixCommand.Setter
                .withGroupKey(GROUP_KEY)
                .andThreadPoolPropertiesDefaults(THREAD_POOL_PROPERTIES)
                .andCommandPropertiesDefaults(COMMAND_PROPERTIES)
                .andCommandKey(HystrixCommandKey.Factory.asKey(metricName)));
            this.callable = callable;
        }
    
        @Override
        protected Object run() throws Exception {
            return callable.call();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-02-22
      • 2017-02-20
      • 2016-04-20
      • 2018-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-12
      • 2017-03-30
      相关资源
      最近更新 更多