feign的fallback操作
Fallback可以帮助我们在使用Feign去调用另外一个服务时,如果出现了问题,走服务降级,返回一个错误数据,避免功能因为一个服务出现问题,全部失效。
依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
启动类上添加注解:
//开启Feign调用, 扫描feign接口所在包
@EnableFeignClients(basePackages = {"com.xx.feign"})
1。创建一个类,去实现自己的feign接口,并实现里面的方法,并用@Component交给spring管理
例如
/**
* 当feign调用出问题了, 会自动执行这里, 防止调用报错中断执行
* 这里都是给feign调用的错误兜底的方法
* 注意: 兜底方法的路径不能和feign接口相同, 因为springMvc不允许同一个访问路径有两个方法
* @author zhaojian
*/
@Component
@RequestMapping("/fallback")
public class SearchFeignFallBack implements SearchFeign { @Override
public String index() {
return "feign调用出问题了";
} @Override
public Customer findById(Integer id) {
return new Customer(1, "feign调用有问题");
} @Override
public Customer findCustomer(Integer id, String name) {
return new Customer(1, "feign调用有问题");
} @Override
public Customer save(Customer customer) {
return new Customer(1, "feign调用有问题");
} }
修改之前自己写的feign接口,在注解中,添加fallback类名.class
例如:
/**
* feign接口, FeignClient后面指定被调用微服务的服务名
* @author zhaojian
*/
@FeignClient(value = "SEARCH", fallback = SearchFeignFallBack.class)
@RestController
public interface SearchFeign {
这个微服务的配置文件yml添加内容,如下:
server:
port: 9001
#指定服务的名称
spring:
application:
name: CUSTOMER
# 指定Eureka服务地址
eureka:
client:
service-url:
defaultZone: http://root:root@localhost:8761/eureka
# 指定具体服务的负载均衡策略
SEARCH:
ribbon:
# 具体负载均衡使用的类
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.WeightedResponseTimeRule
feign:
hystrix:
enabled: true
然后再controller,用feign远程调用出现问题时,会走刚才写的fallback降级方法
feign的fallback操作的更多相关文章
- SpringCloud Feign 之 Fallback初体验
SpringCloud Feign 之 Fallback初体验 在微服务框架SpringCloud中,Feign是其中非常重要且常用的组件.Feign是声明式,模板化的HTTP客户端,可以帮助我们更方 ...
- 关于Feign的Fallback处理
Feign的不恰当的fallback Feign的坑不少,特别与Hystrix集成之后. 在微服务引入Feign后,上线不久后便发现,对于一个简单的查询类调用,在下游返回正常的"404-资源 ...
- No fallback instance of type class found for feign client user-service(转)
1.错误日志 在 feign 开启熔断,配置 fallback 类,实现当前接口的实现类时,报错信息如下: Error starting ApplicationContext. To display ...
- Spring Cloud Alibaba Sentinel 整合 Feign 的设计实现
作者 | Spring Cloud Alibaba 高级开发工程师洛夜 来自公众号阿里巴巴中间件投稿 前段时间 Hystrix 宣布不再维护之后(Hystrix 停止开发...Spring Cloud ...
- SpringCloud Feign 之 超时重试次数探究
SpringCloud Feign 之 超时重试次数探究 上篇文章,我们对Feign的fallback有一个初步的体验,在这里我们回顾一下,Fallback主要是用来解决依赖的服务不可用或者调用服务失 ...
- feign使用hystrix熔断的配置
熔断器hystrix 在分布式系统中,每个服务都可能会调用很多其他服务,被调用的那些服务就是依赖服务,有的时候某些依赖服务出现故障也是很正常的. Hystrix 可以让我们在分布式系统中对服务间的调用 ...
- Feign使用Hystrix
Feign使用Hystrix开发步骤 1.导入依赖spring-cloud-starter-hystrix 2.消费启动类开启@EnableCircuitBreaker 3.配置yml文件feign. ...
- springcloud(七) feign + Hystrix 整合 、
之前几章演示的熔断,降级 都是 RestTemplate + Ribbon 和 RestTemplate + Hystrix ,但是在实际开发并不是这样,实际开发中都是 Feign 远程接口调用. ...
- SpringCloud系列十六:Feign使用Hystrix
1. 回顾 上文讲解了使用注解@HystrixCommand的fallbackMethod属性实现回退.然而,Feign是以接口形式工作的, 它没有方法体,前文讲解的方式显然不适用与Feign. 事实 ...
随机推荐
- React简单教程-3-样式
前言 在上一章 React 简单教程-2-ts 和组件参数 中我们新建的子组件 Displayer 没有样式,显得平平无奇,这一篇我们将给他美化一下. CSS 文件 一般的做法,是在你的组件级目录下新 ...
- JAVA - 请说明”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?
请说明"static"关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法? "static"关键字表明一个成 ...
- JS:object
object:对象 1.对象是拥有属性和方法的数据,也是一个变量,但值有多个,以key-value的形式. 2.对象有继承属性: 每当创建一个对象,对象里面就会有一个原型对象prototype,可以从 ...
- HDLBits->Circuits->Arithmetic Circuitd->3-bit binary adder
Verilog实例数组 对于一个定义好的简单module,例如加法器之类,如果我们要对其进行几十次几百次的例化,并且这些例化基本都是相同的形式,那么我们肯定不能一个个的单独对其进行例化,此时我们就可以 ...
- SAP APO - Architecture
SAP APO体系结构由多个组件组成-数据库,BI环境包含InfoCube和实时缓存. InfoCube是BI数据集市的一部分,实时缓存是您保留与计划和调度有关的所有数据的主要区域. 您可以在实时缓存 ...
- Linux目录结构和文件类型
文件系统目录结构 根(/)是所有文件的入口,类似于倒状的树 以 . 开头的文件为隐藏文件 文件路径之间用/分隔,包括路径在内文件名称最长4095个字节 文件名除了斜杠和NUL都可以,文件名的最大长度是 ...
- P6622 信号传递 做题感想
题目链接 前言 在这里分享两种的做法. 一种是我第一直觉的 模拟退火.(也就是骗分) 还有一种是看题解才搞懂的神仙折半搜索加上 dp . 模拟退火 众所周知,模拟退火 是我这种没脑子选手用来骗分的好算 ...
- android studio 初印象
ANSROID STUDIO sdk 目录 build-tools目录,存放各版本Android的各种编译工具. docs目录,存放开发说明文档. extras\android目录,存放兼容低版本的新 ...
- Vue3 项目实战
使用Vue3 开发一个小米商城 业务流程 登录---> 产品首页--->产品站--->产品详情 购物车--->订单确认--->订单支付--->订单列表 业务开发流程 ...
- springboot配置logback.xml
由于springboot框架自带log4j,因此我们只需配置下logback文件,即可, 在main/resources根目录下,新建logback-spring.xml文件,copy下述代码: &l ...