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 ...
随机推荐
- 数字麦克风PDM信号采集与STM32 I2S接口应用
数字麦克风采用MEMS技术,将声波信号转换为数字采样信号,由单芯片实现采样量化编码,一般而言数字麦克风的输出有PDM麦克风和PCM麦克风,由于PDM麦克风结构.工艺简单而大量应用,在使用中要注意这二者 ...
- Java | Map排序,工具类改进
package util; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; ...
- java基本数据类型和包装类之间的区别
1.声明方式不同,基本类型不适用new关键字,而包装类型需要使用new关键字来在堆中分配存储空间: 2.存储方式及位置不同,基本类型是直接将变量值存储在堆栈中,而包装类型是将对象放在堆中,然后通过引用 ...
- 【Java例题】7.5 文件题2-学生成绩统计
5.学生成绩统计.已有一个学生成绩文件,含有多位学生的各三门课的成绩:读取这个文件中的每位学生的三门课成绩,然后计算均分:最后对这些均分按照大于或小于75分的界限,分别写到另两个文件中. packag ...
- python开发基础--思维导图
开始学习python,相当于零基础 非自学,自学的痛苦不想体会和尝试,毕竟不会很友好,知乎上看到很多说自学的好处啊噼里啪啦的.嗯,说的很对,但是我偏不听,略略略.锻炼我的自学能力,这还需要锻炼吗,百度 ...
- JAVA基础知识(二):List接口、ArrayList类和LinkedList类
List接口继承了Collection接口,位于java.util包中.它包含Collection接口的所有方法,外加其他一些方法(具体实现参考源码),比较重要的有: anyType get(int ...
- sql存储过程中循环批量插入
前几天有一个需求很头痛,部门是有上下级关系的,在给部门的经理赋予角色和权限的时候,通常我们都会认为假如经理A的部门是1,那么我给了他部门1 的管理权限,那么1的下级部门101,102,103 &quo ...
- pythonday05数据类型(三)
---恢复内容开始--- 今日内容 1.字典 2.强制转换 3.习题讲解 1.字典 帮助用户去表示一个事物的信息(事物是有多个属性). info = {"name":'刘伟达',' ...
- volatile关键字的详解-并发编程的体现
xl_echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!! 参 ...
- IntelliJ IDEA提升效率开发插件必备
工欲善其事,必先利其器,好的工具可以提升我们的开发效率,下面介绍几款个人觉得比较好的编辑器插件,不仅炫酷更重要可以提高你的工作效率. 本文是作者辛苦整理的16款插件,每个都是超级实用的,不好不介绍,相 ...