Open-Feign整合hystrix降級熔斷實戰(zhàn)記錄
一、服務(wù)端
1、配置文件
application.yml
server:
port: 9000
spring:
application:
name: my-test2 #服務(wù)的名稱
2、控制層
@RestController
public class ShoppingController {
@RequestMapping("/myTestBuy2")
public String myTestBuy2(){
//用來模擬服務(wù)超時
try {
Thread.sleep(6000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "購買成功——時間:"+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
}
}
二、客戶端
1、依賴
<!--Open-Feign依賴-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!--hystrix依賴-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
2、配置文件
server:
port: 8000
spring:
application:
name: my-test1 #服務(wù)的名稱
#允許服務(wù)降級配置
feign:
hystrix:
enabled: true
#自定義ribbon的超時時間 設(shè)置的要比hystrix-timeoutInMilliseconds超時時間大
ribbon:
#指的是建立連接后從服務(wù)器讀取到可用資源所用的時間。
ReadTimeout: 10000
#指的是建立連接所用的時間,適用于網(wǎng)絡(luò)狀況正常的情況下,兩端連接所用的時間,處理請求的超時時間,默認為5秒。
ConnectTimeout: 10000
hystrix:
command:
default:
execution:
isolation:
thread:
#feign整合hystrix 光設(shè)置Hystrix超時沒用的 要配合ribbon超時
timeoutInMilliseconds: 5000
my-test2:
url: http://127.0.0.1:9000
3、啟動類
@SpringBootApplication
@EnableFeignClients//開啟open-feign
@EnableHystrix//開啟降級熔斷服務(wù)
public class MyTestApplication1 {
public static void main(String[] args) {
SpringApplication.run(MyTestApplication1.class,args);
}
}
4、在控制層當中調(diào)用
@RestController
public class TestController1 {
@Autowired
TestService1 testService1;
@RequestMapping("/myTestBuy1")
public String myTestBuy2(){
return testService1.myTestBuy2();
}
}
5、創(chuàng)建一個類實現(xiàn)服務(wù)FeignClient接口
@Component
public class MyHystrix1 implements TestService1 {
@Override
public String myTestBuy2() {
return "調(diào)用失敗,該服務(wù)被熔斷——時間:"+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
}
}
6、在服務(wù)FeignClient接口上配置FallBack實現(xiàn)類
@FeignClient(name = "my-test2", url = "${my-test2.url}", fallback = MyHystrix1.class)
public interface TestService1 {
@RequestMapping("/myTestBuy2")
String myTestBuy2();
}
三、測試
1、場景一服務(wù)正常調(diào)用

2、場景二當被調(diào)服務(wù)停止運行時
只給兩秒的時間,則自動啟動熔斷


3、場景三當調(diào)取服務(wù)超時時
熔斷時間根據(jù)hystrix設(shè)置的時間,我這里設(shè)置的是5秒


4、其他

到此這篇關(guān)于Open-Feign整合hystrix降級熔斷實戰(zhàn)記錄的文章就介紹到這了,更多相關(guān)Open-Feign整合hystrix降級熔斷內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java數(shù)據(jù)結(jié)構(gòu)之基于比較的排序算法基本原理及具體實現(xiàn)
最近剛學習完七種比較常見的基于比較的排序算法,感覺比較重要,所以寫個博客記錄一下,通讀本篇對大家的學習或工作具有一定的價值,需要的朋友可以參考下2021-09-09
在SpringBoot項目中實現(xiàn)讀寫分離的流程步驟
SpringBoot作為一種快速開發(fā)框架,廣泛應(yīng)用于Java項目中,在一些大型應(yīng)用中,數(shù)據(jù)庫的讀寫分離是提升性能和擴展性的一種重要手段,本文將介紹如何在SpringBoot項目中優(yōu)雅地實現(xiàn)讀寫分離,并通過適當?shù)拇a插入,詳細展開實現(xiàn)步驟,同時進行拓展和分析2023-11-11
Java多線程中的ThreadLocal應(yīng)用場景及問題解讀
這篇文章主要介紹了Java多線程中的ThreadLocal應(yīng)用場景及問題解讀,ThreadLocal這個類在多線程并發(fā)中主要的使用場景是什么呢,我們都知道多線程并發(fā)問題實際就是多個線程對公共資源訪問和修改問題,需要的朋友可以參考下2023-12-12
springmvc無法訪問/WEB-INF/views下的jsp的解決方法
本篇文章主要介紹了springmvc無法訪問/WEB-INF/views下的jsp的解決方法,非常具有實用價值,需要的朋友可以參考下2017-10-10
使用Spring Framework 時常犯的十大錯誤(小結(jié))
這篇文章主要介紹了使用Spring Framework 時常犯的十大錯誤(小結(jié)),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-07-07

