2016-11-22 51 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(); 
    } 
} 
相關問題