hystrixCommand注释 - commandKey的目的是什么

时间:2016-02-01 20:54:54

标签: java spring hystrix

使用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?我应该使用所有相同的,或每个类别或所有独特的等。

2 个答案:

答案 0 :(得分:1)

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

  

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

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

我找到了所有这些信息here

答案 1 :(得分:1)

  1. commandKey与线程池有关系吗?

      

    HystrixCommand用于监视,断路器,度量发布,缓存和其他此类用途。

    EditText percentage = (EditText)findViewById(R.id.percentage); EditText amount = (EditText)findViewById(R.id.amount); amount.addTextChangedListener(new TextWatcher() { @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub // calculate percentage and set it to percentage here } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } });

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

  2. 如何构造commandKeys?

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

    It has nothing to do with thread pool.