SpringCloud Feign 之 Fallback初体验
SpringCloud Feign 之 Fallback初体验
在微服务框架SpringCloud中,Feign是其中非常重要且常用的组件。Feign是声明式,模板化的HTTP客户端,可以帮助我们更方便快捷调用HTTP API。本文主要针对Feign的熔断机制Fallback进行简单介绍。Fallback主要是用来解决依赖的服务不可用或者调用服务失败或超时,使用默认的返回值。
1.引入Feign
pom依赖包
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
<version>1.4.7.RELEASE</version>
</dependency>
启动类Application增加注解
@SpringBootApplication(scanBasePackages = {"com.xiaoqiang.feigncomsumer"})
@EnableFeignClients(basePackages = {"com.xiaoqiang.feigncomsumer"})
@EnableEurekaClient
public class FeigncomsumerApplication {
public static void main(String[] args) {
SpringApplication.run(FeigncomsumerApplication.class, args);
} }
接口类配置
@FeignClient(name = "${feign.provider}",path = "/feignprovider")
@Component
public interface StudentClient { @GetMapping("/stud/getStudentList")
List<Student> getStudentList(@RequestParam(required = false,name = "name") String name);
}
2.Fallback配置
- FallBack类
这里有一点需要注意的是@RequestMapping中的value,也就是url,不能与接口类中的url一样。因为一个URL不能映射到两个方法上。
@Component
@RequestMapping("fallback/")
public class FallBackStudentClient implements StudentOtherClient {
@Override
public Student getStudent(String name) {
Student student = new Student();
student.setAge(0);
student.setName("fall back test");
return student;
}
}
接口类
在@FeignClient注解的参数指定Fallback类,且需要@Component注解。
@Component
@FeignClient(name = "${feign.provider}",path = "/feignprovider"
,fallback = FallBackStudentClient.class)
public interface StudentOtherClient {
@GetMapping("/stud/getStudent")
Student getStudent(@RequestParam(required = false, name = "name") String name);
}
打开Hystrix熔断功能
在bootstrap.yml中增加Hystrix配置。其中Hystrix的默认time-out时间为1s。
feign:
name: MFRAMEWORK-PROVIDER
provider: feignprovider
##开启Hystrix断路器
hystrix:
enabled: true
以上就是Figen的Fallback初体验的全部内容了。
demo地址:https://github.com/lanxuan826/sample-library/tree/master/feigndemo-fallback
ps:在测试过程遇到了一个问题,错误内容如图。
原因:多个接口上的@FeignClient(“相同服务名”)会报错,overriding is disabled。
解决:
在application.yml中配置:
spring
main: allow-bean-definition-overriding: true
SpringCloud Feign 之 Fallback初体验的更多相关文章
- SpringCloud个人笔记-02-Feign初体验
项目结构 sb_cloud_product <?xml version="1.0" encoding="UTF-8"?> <project x ...
- SpringCloud个人笔记-04-Stream初体验
sb_cloud_stream Spring Cloud Stream 是一个构建消息驱动微服务的框架 应用程序通过 inputs 或者 outputs 来与 Spring Cloud Stream ...
- SpringCloud个人笔记-03-Config初体验
sb-cloud-config 配置中心 <?xml version="1.0" encoding="UTF-8"?> <project xm ...
- SpringCloud个人笔记-01-Eureka初体验
eureka是一个高可用的组件,它没有后端缓存,每一个实例注册之后需要向注册中心发送心跳,在默认情况下erureka server也是一个eureka client ,必须要指定一个 serve &l ...
- SpringCloud初体验:五、Sidecar 将 PHP 这类非 Java 生态语言的服务接入 Spring Cloud
先起一个 Sidecar 服务,一个PHP服务一个应用,和PHP服务部署在同一台机子,通过 localhost 访问,这样就解决了网络开销,相当于本地进程间调用 Sidecar 服务比较简单, 1.这 ...
- SpringCloud初体验:前言
体验了一天 SpringCloud 后发现,人们所讲的微服务架构不是一门技术,而是一种风格. 感觉确实可以这么认同,因为一套 SpringCloud 玩下来(未深入.未完整「链路追踪.动态刷新配置…… ...
- Spring Cloud 负载均衡初体验
目录 服务搭建 1.注册中心--Eureka Server 2.服务提供方--Service Provider 3.服务消费方--Service Consumer 服务消费 Feign 与断路器 Hy ...
- SpringCloud Feign 之 超时重试次数探究
SpringCloud Feign 之 超时重试次数探究 上篇文章,我们对Feign的fallback有一个初步的体验,在这里我们回顾一下,Fallback主要是用来解决依赖的服务不可用或者调用服务失 ...
- 蚂蚁 RPC 框架 SOFA-RPC 初体验
前言 最近蚂蚁金服开源了分布式框架 SOFA,楼主写了一个 demo,体验了一下 SOFA 的功能,SOFA 完全兼容 SpringBoot(当然 Dubbo 也是可以兼容的). 项目地址:Alipa ...
随机推荐
- Resource 使用详解
极力推荐文章:欢迎收藏 Android 干货分享 阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以 ...
- jquery验证大全
jQuery验证及限制 绑定键盘监听事件 $(document).on("keypress", ".txt-valid-len", function (e) { ...
- dart的基本语法(一)
Hello world 安装dart的环境就不赘述了,无脑安装就可以了,安装过程中好像需要梯子(vpn),我装的时候失败好多次,我的梯子不能用了,准备不装了的时候,莫名其妙的装好了.迷の操作.惯例 ...
- 如何永久破解IDEA 2019.2
声明: 支持知识产权,支持正版产权,以下仅限个人学习使用IDEA工具时随笔记录,禁止商业使用. 以下个人提供的激活补丁和激活码来源,均由网上下载,各位也可以自行查找. IDEA官网下载地址:https ...
- R语言中如何找出在两个数据框中完全相同的行(How to find common rows between two dataframe in R?)
I would like to make a new data frame which only includes common rows of two separate data.frame. ex ...
- RDIFramework.NET敏捷开发框架通过SignalR技术整合即时通讯(IM)
1.引言 即时通讯(IM)是RDIFramework.NET敏捷开发框架全新提供的一个基于Web的即时通讯.内部聊天沟通的工具.界面美观大方对于框架内部进行消息的沟通非常方便.基于RDIFramewo ...
- 吉特日化MES-电子批记录普通样本
在实施吉特日化配料系统的时候,客户希望一键式生成生产过程电子批记录,由于功能的缺失以及部分设备的数据暂时还无法完全采集到,先做一个普通样本的电子批记录格式打印. 电子批记录包含如下几个部分: 1. ...
- [ PyQt入门教程 ] PyQt+socket实现远程操作服务器
来需求了..干活啦.. 需求内容 部分时候由于缓存刷新.验证码显示不出来或者浏览器打不开或者打开速度很慢等原因,导致部分测试同事不想使用浏览器登录服务器执行命令.期望有小工具可以替代登录浏览器的操作, ...
- Selenium + python 测试环境搭建扩展-HTMLUNIT的使用
尝试给公司的网站写每日例行检查的脚本时,不需要去打开浏览器,这是就用到HTMLUNIT的使用 HTMLUNIT是基于Selenium服务端的,所以需要selenium-server-standalon ...
- SpringCould-------使用Hystrix 实现断路器进行服务容错保护
消费: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.or ...