2016-11-22 53 views
0

我正在使用动态创建Hystrix命令的系统。 HystrixCommand只有一个实现,它接收其配置以及在run方法内执行的代码(Callable)。对指标使用不同的Hystrix命令名称

调用相同远程服务的命令根据它们在其中执行的组件具有不同的命令键,因此它们的断路器彼此独立。但是,我希望根据所调用的远程服务将它们汇总到度量流中的单个名称下。那可能吗?

我可以看到有一个command group属性,我将它设置为我的远程服务名称,但似乎Hystrix仪表板根据command name将条目组合在一起。

回答

0

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

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(); 
    } 
} 
相关问题