package com.example.demo;import com.netflix.hystrix.HystrixCommand;//import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;import com.netflix.hystrix.HystrixCommandGroupKey;import com.netflix.hystrix.HystrixCommandProperties;import feign.Feign;import feign.Request;import feign.Retryer;import feign.Target;import feign.hystrix.HystrixFeign;import feign.hystrix.SetterFactory;import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Scope;import java.lang.reflect.Method;@Configuration@ConditionalOnClass({ HystrixCommand.class, HystrixFeign.class })public class FeginConfiguration { ???public static int connectTimeOutMillis = 5000;//超时时间 ???public static int readTimeOutMillis = 5000; ???@Bean ???public Request.Options options() { ???????return new Request.Options(connectTimeOutMillis, readTimeOutMillis); ???} ???//自定义重试次数 ???@Bean ???public Retryer feignRetryer(){ ???????Retryer retryer = new Retryer.Default(100, 1000, 4); ???????return retryer; ???} ???//hystrix ?超时时间 ???@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(SchedualServiceHi.class.getSimpleName()))// 控制 RemoteProductService 下,所有方法的Hystrix Configuration ???????????????????????.andCommandPropertiesDefaults( ???????????????????????????????HystrixCommandProperties.Setter().withExecutionTimeoutInMilliseconds(10000) // 超时配置 ???????????????????????); ???????????} ???????}); ???}}
feginclinet中设置hystrix的参数
原文地址:https://www.cnblogs.com/tiancai/p/9585023.html