我正在开发一个动态创建Hystrix命令的系统。 sum.add = function() { ... };
只有一个实现接收其配置以及要在HystrixCommand
方法中执行的代码(Callable
)。
调用相同远程服务的命令具有基于它们执行的组件的不同命令键,因此它们的断路器彼此独立。但是,我希望根据所调用的远程服务,在单个名称下将它们聚合在度量标准流中。这可能吗?
我可以看到有一个command group属性,我将其设置为我的远程服务名称,但似乎Hystrix Dashboard根据command name将条目分组在一起。
答案 0 :(得分: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();
}
}