hystrixCommand注释 - commandKey的目的是什么

问题描述 投票:7回答:2

使用spring的Hystrix注释described here

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

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

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

我有大约8个类,我想在其中注释方法。我会用这个注释一些类方法,但我想知道如何构造commandKeys?我应该使用所有相同的,或每个类相同或所有独特的等。

java spring hystrix
2个回答
1
投票

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

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

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

我找到了所有这些信息here


1
投票
  1. commandKey与线程池有什么关系吗? HystrixCommand用于监控,断路器,度量标准发布,缓存和其他此类用途。 It has nothing to do with thread pool. 通常,每个CommandGroupKey都有自己的线程池,因此任何一组命令都不能使其他命令无法运行。可以通过注入ThreadPoolKey显式地为HystrixCommand配置线程池。默认CommandGroupKey是带注释方法的类名。
  2. 如何构造commandKeys? 默认情况下,Commandkey的名称是命令方法名称,在您的情况下,它是getUserById。 You don't have to specify a CommandKey unless you want a different name for the command.
© www.soinside.com 2019 - 2024. All rights reserved.