第一步:开启Hystrix熔断机制,并配置超时设置
超时设置公式:Hystrix超时时间= (1 + MaxAutoRetries + MaxAutoRetriesNextServer) * ReadTimeout
feign:
hystrix:
enabled: true #开启熔断支持
ribbon:
ReadTimeout: 2000
SocketTimeout: 2000
ConnectTimeout: 2000
hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 4000
第二步:创建托底工厂类
建议创建一个公共的feign-api直接调用
@Component
public class userFeignClientFallbackFactory implements FallbackFactory<UserFeignClient> {
@Override
public UserFeignClient create(Throwable throwable) {
return new UserFeignClient() {
@Override
public User queryById(Long id) {
return new User(-1L,"用户查询失败,请稍后重试!!");
}
};
}
}
第三步:指定托底工厂类,使用fallbackFactory属性,使用工厂方式指定托底
同样建议创建一个公共的feign-api直接调用
@FeignClient(value = "user-server",fallbackFactory = userFeignClientFallbackFactory.class)
public interface UserFeignClient {
@GetMapping("/user/{id}")
User queryById(@PathVariable("id") Long id);
}