hystrixCommand annotation - commandKey 的用途是什么

2022-09-04 22:43:13

使用此处描述的 Spring 的 Hystrix 注释

我想知道命令Key参数是什么。在以下上下文中,我想知道此参数的含义:

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

请注意,这里的命令Key被定义为GetUserByIdCommand,这与线程池有什么关系吗?这是否意味着具有该命令密钥的任何内容都使用相同的线程池,如果是这样,这是否意味着对于我具有故障回复的每个方法都有自己的commandKey的良好做法?

我有大约8个类,我想在其中注释方法。我将用这个注释一些类方法,但我想知道如何构建命令Keys ?我应该使用所有相同的,或者每个类都相同或所有唯一等。


答案 1

终于找到了答案。命令键用于。

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

然后,您可以在 hystrix 命令中使用 commandKey 来引用这些方法。如果您不使用命令Key(可选)。则方法名称用作默认值。因此,只需重命名命令即可。

我在这里找到了所有这些信息


答案 2
  1. 命令密钥与线程池有什么关系吗?

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

    It has nothing to do with thread pool.

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

  2. 如何构建命令键?

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

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


推荐