Spring Cloud Feign 之fallback(熔断机制)
FeignClient注解的一些属性
属性 | 默认值 | 作用 | 备注 |
---|---|---|---|
value | 空字符串 | 调用服务名称,和name属性相同 | |
serviceId | 空字符串 | 服务id,作用和name属性相同 | 已过期 |
name | 空字符串 | 调用服务名称,和value属性相同 | |
url | 空字符串 | 全路径地址或hostname,http或https可选 | |
decode404 | false | 配置响应状态码为404时是否应该抛出FeignExceptions | |
configuration | {} | 自定义当前feign client的一些配置 | 参考FeignClientsConfiguration |
fallback | void.class | 熔断机制,调用失败时,走的一些回退方法,可以用来抛出异常或给出默认返回数据。 | 底层依赖hystrix,启动类要加上@EnableHystrix |
path | 空字符串 | 自动给所有方法的requestMapping前加上前缀,类似与controller类上的requestMapping | |
primary | true |
primary
: 当使用feign客户端和Hystrix后备方案时,在ApplicationContext会存在同一类型的多个bean组件实例。这会导致@Autowired无法工作,因为它发现有多个候选bean可用。
为了绕开这个问题点,Spring Cloud Netflix的做法是把所有的feign客户端实例加上注解@Primary,这样框架就知道要注入哪个bean了。
但在某些场景下,这并不是希望的方案。要关闭该行为,可以将@FeignClient的属性primary设置为false
重点:
@FeignClient(name = "armstype",fallback = clientImpl.class)
1 | package com.zby.client; |
- 写熔断机制
1 | package com.zby.client.clientImpl; |
- 测试效果,启动eureka以及调用服务(不启动被调用服务)模拟被调用服务不在线状态
一个服务在线
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 雅!
评论