【问题标题】:hystrixCommand annotation - what is purpose of commandKeyhystrixCommand 注释 - commandKey 的目的是什么
【发布时间】:2016-05-10 11:18:21
【问题描述】:

使用spring的Hystrix注解described here

我想知道 commandKey 参数是什么。在以下上下文中,我想知道这个参数的含义:

   @HystrixCommand(groupKey="UserGroup", commandKey = "GetUserByIdCommand")
public User getUserById(String id) {
    return userResource.getUserById(id);
}

注意这里的 commandKey 定义为 GetUserByIdCommand ,这和线程池有关系吗?这是否意味着具有该命令键的任何东西都使用相同的线程池,如果是这样,这是否意味着它对于我拥有的每一个具有故障回复的方法都有自己的 commandKey 的良好做法?

我有大约 8 个要在其中注释方法的类。我将用这个注释一些类方法,但我想知道如何构造命令键?我应该使用所有相同的,还是每个班级相同或所有唯一的等等。

【问题讨论】:

  • 该键代表用于监控、断路器、指标发布、缓存等的 HystrixCommand。
  • 这不是和线程池有关吗?如果我对我注释的所有方法都使用唯一的命令键,它将产生许多新的线程池,对吗?
  • 如果你不提供线程池key,那么Hystrix会使用组key来控制线程池。如果它们都不可用,则默认只有1个线程池,默认线程数为10。
  • 这是我一直在寻找的答案,但我希望你有文档来支持它或其他东西。你可以创建一个答案以供考虑。

标签: java spring hystrix


【解决方案1】:

终于找到答案了。 CommandKey 用于。

默认情况下,命令键的名称是命令方法名称:对于 例如,getUserById,但您可以将其重命名为 getUserByIdCommand

然后你可以在hystrix命令中使用commandKey来引用方法。如果你不使用 commandKey(它的可选)。然后方法名称被用作默认值。所以它只是重命名命令。

我找到了所有这些信息here

【讨论】:

    【解决方案2】:
    1. commandKey 和线程池有关系吗?

      HystrixCommand 用于监控、断路器、指标发布、缓存和其他此类用途。

      It has nothing to do with thread pool.

      通常每个 CommandGroupKey 都有自己的线程池,因此任何一组命令都不会导致其他命令无法运行。 HystrixCommand 可以通过注入 ThreadPoolKey 显式配置线程池。默认 CommandGroupKey 是注解方法的类名。

    2. 如何构造命令键?

      默认情况下,Commandkey 的名称是命令方法名称,在您的情况下,它是 getUserById

      You don't have to specify a CommandKey unless you want a different name for the command.

    【讨论】:

      猜你喜欢
      • 2018-09-23
      • 2014-12-11
      • 2020-11-05
      • 2017-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-05
      相关资源
      最近更新 更多