Feign中使用hystrix
在前面Feign整合Ribbon负载均衡的基础上(Feign整合Ribbon负载均衡),Feigin再整合Hystrix断路
一、backend_show_consumer工程
该工程的依赖如下

1、工程中的application.yml中增加配置
feign:
hystrix:
enabled: true

2、增加接口ProviderApi,对应backend_show_provider中的提供的两个接口
@FeignClient(name = "hello-service-provider",
path = "/provider",
fallback = ProviderFallbackAPIImpl.class
public interface ProviderApi { @RequestMapping(value = "/sayhello")
String invokerProviderController(@RequestParam("message")String message); @RequestMapping(value = "/{providerId}/sayhello", method = RequestMethod.POST)
String invokerProvider(
@RequestHeader("author") String author,
@PathVariable("providerId") String providerId,
@RequestBody UserModel json);
}
设置fallback = ProviderFallbackAPIImpl.class
3、降级实现:ProviderFallbackAPIImpl类
//降级实现
@Component
public class ProviderFallbackAPIImpl implements ProviderApi {
@Override
public String invokerProviderController(String message) {
return "invokerProviderController fallback message=" +message;
} @Override
public String invokerProvider(String author, String providerId, UserModel json) {
return "invokerProvider fallback auth=" +author + ",providerId=" + providerId +",json=" +json;
}
4、Controller方法
@Slf4j
@RestController
public class ConsumerController { @Resource
private ConsumerServiceAPI serviceAPI; @Resource
private ProviderApi providerApi; @RequestMapping(value = "/sayhello/feign")
public String sayHelloFeign(String message){
System.out.println("feign message=" + message);
return providerApi.invokerProviderController(message);
} @RequestMapping(value = "/sayhello/post")
public String sayHelloPost( String author,
String providerId,
UserModel json){
log.info("author:{},providerId;{}, userModel:{}", author, providerId, json); return providerApi.invokerProvider(author, providerId, json);
} @RequestMapping(value = "/sayhello")
public String sayHello(String message){
return serviceAPI.sayHello(message);
} }
二、启动eureka服务(略)
三、启动backend_show_provider
四、测试
1、此时访问正常

或者

此时说明Feign整合Ribbon负载均衡器
2、停止backend_show_provider服务,这样backend_show_customer访问backend_show_provider就会超时,触发熔断

此时说明Feign整合Hystrix断路器
五、另外一种实现方式fallbackFactory
1、增加fallbackFactory配置

2、FallbackFactory 实现如下
@Component
public class FallbackFactory implements feign.hystrix.FallbackFactory {
@Override
public ProviderApi create(Throwable throwable) {
return new ProviderApi() {
@Override
public String invokerProviderController(String message) {
return "invokerProviderController FallbackFactory message=" +message;
} @Override
public String invokerProvider(String author, String providerId, UserModel json) {
return "invokerProvider FallbackFactory auth=" +author + ",providerId=" + providerId +",json=" +json; }
};
}
}
3、调用

Feign中使用hystrix的更多相关文章
- spring cloud中使用hystrix实现回退
在微服务架构中,我们的服务被拆分成多个微服务,每个微服务完成自己的职责,微服务之间通过rpc或http进行调用.这个时候我们就要确保我们的服务高可用,但谁也说不准我们的服务能永远快速的提供服务.假如现 ...
- SpringCloud 在Feign上使用Hystrix(断路由)
SpringCloud 在Feign上使用Hystrix(断路由) 第一步:由于Feign的起步依赖中已经引入了Hystrix的依赖,所以只需要开启Hystrix的功能,在properties文件中 ...
- feign中开启熔断的书写步骤
/** 1.在pom.xml中引入依赖 2.在application.yaml中开启hystrix 3.在方法上配置熔断类 4.书写接口的实现类 **/ //1.在pom.xml中引 ...
- Spring Boot和Feign中使用Java 8时间日期API(LocalDate等)的序列化问题【转】
Spring Boot和Feign中使用Java 8时间日期API(LocalDate等)的序列化问题 http://blog.didispace.com/Spring-Boot-And-Feign- ...
- spring Cloud中,解决Feign/Ribbon整合Hystrix第一次请求失败的问题?
Spring Cloud中,Feign和Ribbon在整合了Hystrix后,可能会出现首次调用失败的问题,要如何解决该问题呢? 造成该问题的原因 Hystrix默认的超时时间是1秒,如果超过这个时间 ...
- Spring Boot中使用Feign调用时Hystrix提示异常:"could not be queued for execution and no fallback available."以及"Rejected command because thread-pool queueSize is at rejection threshold"
说明: 1.我还没有真正理解Spring Cloud的精髓,现只停留在使用阶段,可能存在分析不到位的问题. 1.这个是由于线程池的最大数量导致的,官方说随着线程池的数量越大,资源开销也就越大,所以调整 ...
- feign中的hytrix和turbin配置
这里我用了两个生产者和两个消费者进行演示,如下图(画的不好看,凑活看看): 这里我就只讲下怎么注册到dashbord和相关的配置,提供者和消费者等代码可以去下载查看: https://github.c ...
- 在Feign中添加自定义配置
首先先创建一个FeignConfig类,代码如下: package com.xing.config; import org.springframework.context.annotation.Bea ...
- springcloud feign增加熔断器Hystrix
1.依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>s ...
随机推荐
- 佛祖保佑永无BUG代码注释
// // _oo0oo_ // o8888888o // 88" . "88 // (| -_- |) // 0\ = /0 // ___/`---'\___ // .' \\| ...
- Angular - - ng-focus、ng-blur
1.ng-focus 这个指令功能就是比如当一个input等获取到焦点的时候,执行你指定的表达式函数,达到你需要的目的 格式:ng-focus=“value” value:获取焦点时执行的表达式,方法 ...
- js实现滚动条来动态加载数据
主要angular2+es6 data:Array<any> //展示的数据 allData:Array<any> //全部的数据 size:number = 10 //每次动 ...
- boost高质量随机数库 zhuan
shared_ptr<int> tmp2(new int(10)) ; int * test=tmp2.get(); std::cout<<*test<<" ...
- IIS SSL证书 指定的登录会话不存在,可能已被终止 HRESULT:0x80070520
指定的登录会话不存在,可能已被终止 HRESULT:0x80070520 IIS导入证书时,选择”允许导出此证书” 服务器证书名称,在mmc控制台中个人证书中命名
- 第一份offer
11月6日参加的面试,今天签完三方,回头想想,感慨万千. (很多过程没有详细写,只保留了基本的客观事实,避免自吹嫌疑.....) 6号面试,当时来了能有100-200人,以川大和电子科大研究生为主,主 ...
- leetcode python 011
####给定n个非负整数a1,a2,...,an,其中每个表示坐标(i,ai)处的点.##绘制n条垂直线,使得线i的两个端点位于(i,ai)和(i,0).##找到两条线,它们与x轴一起形成一个容器,这 ...
- 将SD卡的音频设置为手机铃声后删除,手机铃声没有恢复到默认的问题
1. Android7.0,将存储卡中MP3设置为铃声,删除该MP3后,settings中的铃声没有变化,来电铃声也没有变化. 原因:android7.0的新特性 google 默认如此设计,在选择铃 ...
- Android : 跟我学Binder --- (2) AIDL分析及手动实现
目录: Android : 跟我学Binder --- (1) 什么是Binder IPC?为何要使用Binder机制? Android : 跟我学Binder --- (2) AIDL分析及手动实现 ...
- 基于Verilog的按键检测实验
一.模块框图及基本思路 detect_module:检测按键输入脚的电平边沿变化 delay_10ms_module:延时消抖,输出按键有效信号 debounce_module:前两个模块的组合模块 ...