# ffhystrix
**Repository Path**: LeeJunProject/ffhystrix
## Basic Information
- **Project Name**: ffhystrix
- **Description**: 快火熔断器,基于spring boot 2.x,开箱即用
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2019-08-30
- **Last Updated**: 2023-04-20
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ffhystrix
#### 介绍
快火熔断器,基于spring boot 2.x,开箱即用
联系方式 qq:625995897
#### 使用说明
1、引入jar包
com.smallstep
ffhystrix-boot-starter
1.0
2、设置熔断回调
@FFHystrixBean
public class TestFallback {
@FFHystrixFallback(service = "http://127.0.0.1:8080", pathPatterns = {"GET$/test"}, responseTypeSensitive = false)
public Object getWithffHystrix() {
Map account = new HashMap<>();
account.put("name", "李俊");
return account;
}
}
3、使用
FFHttpClient ffHttpClient = new FFHttpClient();
// 这里我们设置返回的类型为String,来模拟测试responseTypeSensitive的功效
Object account = ffHttpClient.getForObject("http://127.0.0.1:8080/test", String.class, name);
4、注解参数说明
@FFHystrixBean:标注在类上,表示该类用于提供hystrix降级回调方法
@FFHystrixFallback:标注在降级类中的方法上,有2层含义:
只有符合@ffHystrixFallback注解中的接口地址,FFHttpClient才会使用hystrix方式发起调用。
如果FFHttpClient调用触发降级,会回调用该注解所在的方法。
@FFHystrixFallback详细说明:
service:
service要和FFHttpClient请求时,参数中url的host一致;
service支持"${key}"的方式配置,这样会自动引用properties中配置的值,
service如果配置为空,表示匹配任意的目标服务
pathPatterns:
pathPatterns的配置方式为pathPattern(会匹配任意的method)或者method$pathPattern
pathPatterns支持通配符,?匹配单个字符,*匹配任意字符(不包含/),**匹配任意字符(包含/)
如果pathPatterns值为空数组,表示匹配任意的path
responseTypeSensitive:
默认情况下fallback方法的回参类型,需要和FFHttpClient请求时传入的responseType一致(即使是继承类,也认为是不一样),才会认为该fallback方法匹配本次请求(为了避免类型强制转换错误)。
但是有些场景下,业务需要做一些通用的fallback来统一处理,这样可以将responseTypeSensitive设置为false,框架就不会校验回参类型是否一致。
priority:
该值主要用于FFHttpClient请求的url匹配到多个fallback方法时,通过优先级判断最终使用哪个fallback方法(priority值越大,优先级越高)。
fallback方法的入参FFHystrixFallbackParam:
如果fallback方法定义了FFHystrixFallbackParam类型的入参,框架在调用该fallback方法时,就会传入相应的值(主要是一些FFHttpClient请求的入参)
circuitBreakerEnabled:
是否开启熔断器,默认不启动
circuitBreakerErrorThresholdPercentage:
开启熔断器时有效。默认:50。当出错率超过50%后熔断器启动
circuitBreakerRequestVolumeThreshold:
开启熔断器时有效。熔断器在整个统计时间内是否开启的阀值,默认20。也就是在默认10s内至少请求20次,熔断器才发挥起作用
circuitBreakerSleepWindowInMilliseconds
开启熔断器时有效。熔断时间窗口,默认:5秒.熔断器中断请求5秒后会进入半打开状态,放下一个请求进来重试,如果该请求成功就关闭熔断器,否则继续等待一个熔断时间窗口
#### 配置参数说明
#是否打开熔断降级功能(默认为false)
ff.hystrix.client.enabled=false
#配置>=400的http状态中,哪些不需要触发fallback
ff.hystrix.client.fallback.ignore.httpStatus=400,403-405
#FFHttpClient执行出错时,是否打印错误日志(默认为true)
ff.hystrix.client.log.failedExecution.enabled=true
#FFHttpClient执行超时时,是否打印错误日志(默认为false)
ff.hystrix.client.log.timeout.enabled=false
#FFHttpClient执行被熔断时,是否打印错误日志(默认为false)
ff.hystrix.client.log.shortCircuit.enabled=false
#FFHttpClient执行被拒绝时(队列已满),是否打印错误日志(默认为false)
ff.hystrix.client.log.rejection.enabled=false
#### 错误捕获自定义扩展
//实现FFCustomErrorHandler类
//clientHttpResponse为resttemplate返回response
public class MyCustomErrorHandler implements FFCustomErrorHandler {
@Override
public void handleError(ClientHttpResponse clientHttpResponse) throws IOException {
//todo
}
}
#### 结果忽略自定义扩展
//实现IFallbackIgnore,Exception为请求返回的异常,可进行个性化逻辑判断
//返回true表示忽略,false进入熔断
public class MyFallbackIgnore implements IFallbackIgnore {
@Override
public boolean isFallbackIgnore(Exception e) {
//todo
return false;
}
}
@Bean
public MyFallbackIgnore fallbackIgnore() {
return new MyFallbackIgnore();
}