feignclient设置hystrix参数
来源:互联网 发布:软件测试的周期 编辑:程序博客网 时间:2024/05/29 09:05
序
feign默认集成了hystrix,那么问题来了,如何像hystrix command那样设置每个方法的hystrix属性呢。
实例
@FeignClient("product")public interface RemoteProductService { @RequestMapping(method = RequestMethod.GET,value = "/product/{productId}") public Product getProduct(@PathVariable(value = "productId") int productId);}
FeignClientsConfiguration
spring-cloud-netflix-core-1.2.6.RELEASE-sources.jar!/org/springframework/cloud/netflix/feign/FeignClientsConfiguration.java
@Configuration @ConditionalOnClass({ HystrixCommand.class, HystrixFeign.class }) protected static class HystrixFeignConfiguration { @Bean @Scope("prototype") @ConditionalOnMissingBean @ConditionalOnProperty(name = "feign.hystrix.enabled", matchIfMissing = true) public Feign.Builder feignHystrixBuilder() { return HystrixFeign.builder(); } }
HystrixFeign
feign-hystrix-9.3.1-sources.jar!/feign/hystrix/HystrixFeign.java
private SetterFactory setterFactory = new SetterFactory.Default();
SetterFactory
feign-hystrix-9.3.1-sources.jar!/feign/hystrix/SetterFactory.java
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)); } }}
groupKey,这里为product,即@FeignClient("product")中的值。
Feign.configKey
feign-core-9.3.1-sources.jar!/feign/Feign.java
public static String configKey(Class targetType, Method method) { StringBuilder builder = new StringBuilder(); builder.append(targetType.getSimpleName()); builder.append('#').append(method.getName()).append('('); for (Type param : method.getGenericParameterTypes()) { param = Types.resolve(targetType, targetType, param); builder.append(Types.getRawType(param).getSimpleName()).append(','); } if (method.getParameterTypes().length > 0) { builder.deleteCharAt(builder.length() - 1); } return builder.append(')').toString(); }
commandKey的构造,这里组装了类、方法名、参数,比如本文的实例,commandKey=RemoteProductService#getProduct(int)
配置文件指定
hystrix: command: "RemoteProductService#getProduct(int)": execution: isolation: thread: timeoutInMilliseconds: 500
Java中指定
@Bean public Feign.Builder feignHystrixBuilder() { return HystrixFeign.builder().setterFactory(new SetterFactory() { @Override public HystrixCommand.Setter create(Target<?> target, Method method) { return HystrixCommand.Setter .withGroupKey(HystrixCommandGroupKey.Factory.asKey(RemoteProductService.class.getSimpleName()))// 控制 RemoteProductService 下,所有方法的Hystrix Configuration .andCommandPropertiesDefaults( HystrixCommandProperties.Setter().withExecutionTimeoutInMilliseconds(10000) // 超时配置 ); } }); }
小结
论灵活程度,还是配置文件灵活一点,唯一的工作量就是根据规则构造commandKey,然后就可以进行相关配置了。
作者:scipio
链接:http://www.jianshu.com/p/459ecb01b72d
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
阅读全文
0 0
- feignclient设置hystrix参数
- FeignClient 设置 fallback不起作用
- FeignClient 设置 fallback不起作用
- Hystrix 参数详解及设置样例
- Hystrix部分参数说明
- SpringCloud关于@FeignClient和Hystrix集成对http线程池监控问题
- FeignClient 在 oauth2 中与 hystrix 线程策略冲突问题造成的权限问题
- springboot FeignClient POST带参数无法传值问题
- Hystrix使用说明,配置参数说明
- Hystrix
- Hystrix
- Spring @FeignClient
- FeignClient相关
- Spring Cloud 的 Hystrix 更多参数配置信息
- FeignClient 代码示例
- RequestInterceptor FeignClient header
- springcloud 剔除@FeignClient
- Java HttpClient FeignClient
- SourceTree<三>解决冲突
- myeclipse控制台打印中文乱码最有效解决方案
- CentOS 7安装配置Redis数据库
- easyui文件框与html文件框实现本地图片预览
- JAVA提高篇(26)--集合
- feignclient设置hystrix参数
- 2016 Europe
- 用java编写webservice和在tomcat上部署时遇到的一些问题
- Java I/O 操作及优化建议
- 输出一个整数的每一位
- jQuery中延迟对象then方法和when方法源码分析
- 线程总结
- The C Programming Language 练习题2-8
- es6入门(二):解构赋值和字符串的扩展