使用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?我应该使用所有相同的,或每个类别或所有独特的等。
答案 0 :(得分:1)
默认情况下,命令键的名称是命令方法名称:For 例如,getUserById但您可以将其重命名为getUserByIdCommand
然后您可以在hystrix命令中使用commandKey来引用这些方法。如果你不使用commandKey(可选)。然后方法名称用作默认值。所以它只是重命名命令。
我找到了所有这些信息here
答案 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是带注释的方法的类名。
如何构造commandKeys?
默认情况下,Commandkey的名称为命令方法名称,在您的情况下为 getUserById 。
It has nothing to do with thread pool.