2016-11-22 12 views
0

Hystrixコマンドが動的に作成されるシステムで作業しています。 HystrixCommandの実装は1つしかなく、runメソッド内で実行されるコード(Callable)と同様にその設定を受け取ります。メトリクスに異なるHystrixコマンド名を使用する

同じリモートサービスを呼び出すコマンドは、それらが実行されているコンポーネントに基づいて異なるコマンドキーを持っているため、サーキットブレーカは互いに独立しています。しかし、呼び出されているリモートサービスに応じて、単一の名前でそれらをメトリックストリームに集約したいと思います。それは可能ですか?

command groupプロパティがあり、リモートサービス名に設定していますが、Hystrix Dashboardは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(); 
    } 
} 
関連する問題