feign使用hystrix时如何指定Hystrix的property

feign使用hystrix时如何指定Hystrix的property,比如
@HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "30000")})
 
已邀请:
hystrix设置相关属性有两种方式:
一种是默认配置
一种是通过CommandKey配置,通过CommandKey设置的优先级高于默认配置
具体的可以查看com.netflix.hystrix.HystrixCommandProperties类。
 
feign集成hystrix通过feign.hystrix.SetterFactory设置hystrix相关配置其中使用feign.hystrix.SetterFactory.Default作为SetterFactory的默认实现类
public interface SetterFactory {

/**
* Returns a hystrix setter appropriate for the given target and method
*/
HystrixCommand.Setter create(Target<?> target, Method method);

/**
* Default behavior is to derive the group key from {@link Target#name()} and the command key from
* {@link Feign#configKey(Class, Method)}.
*/
final class Default implements SetterFactory {

@Override
public HystrixCommand.Setter create(Target<?> target, Method method) {
String groupKey = target.name();
String commandKey = Feign.configKey(target.type(), method);
return HystrixCommand.Setter
.withGroupKey(HystrixCommandGroupKey.Factory.asKey(groupKey))
.andCommandKey(HystrixCommandKey.Factory.asKey(commandKey));
}
}
}
主要看生成ComandKey生成方式,默认就是 类名#方法名(参数类型,参数类型)
 
可以通过hystrix CommandKey设置相关属性:


hystrix.command.类名#方法名(参数类型,参数类型).execution.isolation.thread.timeoutInMilliseconds=30000
 

程序猿DD - http://blog.didispace.com

赞同来自:

一直都觉得feign的封装有些过度,所以没花太多精力研究。我知道的是可以在配置中间中对某个服务来进行配置,但是具体某个HystrixCommand配置不确定是否有方法,官方文档中并没有提及。期待更好的答案学习一下~

要回复问题请先登录注册