fallbackFactory与feign.sentinel.enabled=true

📅 2026/7/1 4:02:28
fallbackFactory与feign.sentinel.enabled=true
一、先明确fallbackFactory是谁的fallbackFactory是Feign 原生 API不依赖任何熔断框架Sentinel / Hystrix。它定义在FeignClient注解里是 Feign 自己提供的降级扩展点。作用当 Feign 调用失败时返回一个兜底实现避免直接抛异常。原生逻辑只要调用抛异常就触发 fallbackFactory不管是网络、超时、还是业务异常。二、feign.sentinel.enabledtrue到底做了什么这行配置是Sentinel 接管 Feign 调用的总开关。开启后底层发生三件关键事1.替换 Feign 代理默认 Feign 用FeignInvocationHandler处理调用。开启后Spring 加载SentinelFeignAutoConfiguration用SentinelFeign.Builder替换默认构建器生成SentinelInvocationHandler。2.把 Feign 调用变成 Sentinel 资源每次 Feign 调用都会被 Sentinel 统计QPS、响应时间、异常比例。3.由 Sentinel 决定是否触发降级降级不再由 Feign 原生异常直接触发而是由Sentinel 规则限流、熔断触发。只有当 Sentinel 判定需要熔断 / 限流时才会调用定义的fallbackFactory。三、总结fallbackFactory ...定义降级逻辑Feign 原生接口。feign.sentinel.enabledtrue决定谁来触发降级Sentinel 接管。四、两种模式对比模式触发降级的条件熔断能力限流能力异常统计Feign 原生未开 Sentinel任何调用异常超时、网络、业务无熔断状态机无限流无指标统计Feign Sentinel开启后Sentinel 规则触发熔断 / 限流完整熔断状态机限流 / 热点 / 系统保护实时监控 / 动态规则五、回到代码FeignClient( contextId remoteUserService, value ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory RemoteUserFallbackFactory.class )这行代码本身是 Feign 原生写法定义了降级逻辑。只有在application.yml中配置feign.sentinel.enabled: true时 这个fallbackFactory才会由 Sentinel 的熔断 / 限流规则触发而不是 Feign 原生异常直接触发。六、常见误区澄清误区fallbackFactory是 Sentinel 独有的。正解不是。它是 Feign 原生Sentinel 只是复用了这个接口。误区加了fallbackFactory就等于用了 Sentinel。正解不等于。必须同时开启feign.sentinel.enabledtrue才是 Sentinel 整合。误区Sentinel 降级只处理 Sentinel 异常。正解开启后fallbackFactory会捕获所有异常Sentinel 阻断、网络、业务但熔断决策由 Sentinel 规则控制。七、最终结论fallbackFactory是 Feign 的接口feign.sentinel.enabled决定这个回退由谁来驱动。开启后Sentinel 熔断时就会调用定义的RemoteUserFallbackFactory。