如何通过HystrixThreadPoolKey获取线程池的当前配置?

时间:2016-01-05 23:59:58

标签: java hystrix

有没有办法检索特定于HystrixThreadPoolProperties的{​​{1}}实例(或其他一些属性容器)?

所以基本上默认的线程池属性与我通过执行命令提供的配置重叠:

HystrixThreadPoolKey

我尝试了以下方法:

HystrixCommand.Setter.withGroupKey(<some group>)
    .andThreadPoolKey(hystrixThreadPoolKey)
    .andThreadPoolPropertiesDefaults(...)

这似乎恢复了线程池的default Hystrix configuration,但没有恢复我对密钥对应的特定池所做的任何属性更改。

即使我能够在执行从其运行的命令时验证线程池确实正在拾取配置,情况也是如此。

1 个答案:

答案 0 :(得分:0)

我正在使用的Hystrix版本是1.5.0-rc.5,我无法从库中找到任何内容以允许直接检索与命令关联的线程池属性。所以这就是我尝试使用Java Reflection:

    HystrixInvokableInfo<?> command = HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().iterator().next();

    Field field = command.getClass().getSuperclass().getSuperclass().getSuperclass().getDeclaredField("threadPool");
    field.setAccessible(true);
    HystrixThreadPool threadPool = (HystrixThreadPool) field.get(command);

    Field field2 = HystrixThreadPool.HystrixThreadPoolDefault.class.getDeclaredField("properties");
    field2.setAccessible(true);
    HystrixThreadPoolProperties threadPoolProperties = (HystrixThreadPoolProperties) field2.get(threadPool);