日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

10 在Spring Cloud中使用Hystrix

發布時間:2025/4/5 javascript 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 10 在Spring Cloud中使用Hystrix 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  Hystrix主要用于保護調用服務的一方,如果被調用的服務發生故障,符合一定條件,就會開啟斷路器對調用的程序進行隔離。

1.準備測試程序

  在進行Spring Cloud整合Hystrix之前,我們先準備好測試程序。測試程序所用的項目如下:

  > hystrix-server:該項目作為Eureka服務器,端口為8761。

  > hystrix-provider: 該項目作為服務的提供者,這里只需要啟動一個實例,端口為默認端口8080,提供person/{personId}服務,它根據personId的參數返回一個Penson實例,另外還會提供一個/hello服務,返回普通的字符串。

  > hystrix-invoker: 該項目作為服務調用者,使用的端口是9000。

  項目的目錄結構如下

?  

  本文主要會使用到hystrix-invoker項目來介紹如何在Spring Cloud中使用Hystrix,故下面會詳細介紹hystrix-invoker項目,對于hystrix-server和 hystrix-provider這兩個項目不會詳細介紹。

2.Spring Cloud整合Hystrix

  為服務調用者(hystrix-invoker)項目添加相關的依賴(spring-cloud-starter-hystrix),pom.xml代碼清單如下

  pom.xml

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.triheart</groupId><artifactId>hystrixinvoker</artifactId><version>1.0-SNAPSHOT</version><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Dalston.SR1</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-ribbon</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-hystrix</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-feign</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId><version>1.5.3.RELEASE</version></dependency></dependencies> </project> View Code

  在服務調用者的應用啟動類中,加入啟動斷路器的注解,應用啟動類代碼清單如下

  Invoker.java

package com.triheart.hystrixinvoker;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.web.client.RestTemplate;/*** @author 阿遠* Date: 2018/9/1* Time: 14:31*/ @SpringBootApplication @EnableDiscoveryClient @EnableCircuitBreaker public class InvokerApp {@LoadBalanced@Beanpublic RestTemplate getRestTemplate() {return new RestTemplate();}public static void main(String[] args){SpringApplication.run(InvokerApp.class, args);} }

   新建服務類,在服務方法中調用服務,代碼清單如下

  PersonService.java

package com.triheart.hystrixinvoker;import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate;/*** @author 阿遠* Date: 2018/9/1* Time: 14:43*/ @Service public class PersonService {@Autowiredprivate RestTemplate restTemplate;@HystrixCommand(fallbackMethod = "getPersonFallback")public Person getPerson(Integer id) {// 使用RestTemplate調用Eureka服務Person person = restTemplate.getForObject("http://hystrix-privoder/person/{personId}", Person.class, id);return person;}/*** 定義回退方法* 主要這里傳的參數與上面的一樣,否則會報方法找不到的錯誤*/public Person getPersonFallback(Integer id) {Person person = new Person();person.setId(0);person.setAge(21);person.setName("fallback");person.setMessage("request error");return person;} }

  服務類中注入了RestTemplate,服務方法使用@HystrixCommand注解進行修飾,并且配置了回退方法。@HystrixCommand注解由Hystrix的javanica項目提供,該項目主要是為了簡化Hystrix的使用。被@HstrixCommand修飾的方法,Hystrix會使用AspectJ對其進行代理,Spring會將相關的類轉換成Bean放到容器中,在Spring Cloud中,我們無須過多關心Hystrix的命令管理。

  注意:此處的回退方法的參數需要與@HystrixCommand注解的方法一樣,否則在后面調用該方法時會報如下錯誤

  接下來,編寫控制器來調用服務類的方法,代碼清單如下

  InvokerController.java

package com.triheart.hystrixinvoker;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController;/*** @author 阿遠* Date: 2018/9/1* Time: 14:53*/ @RestController @Configuration public class InvokerController {@Autowiredprivate PersonService personService;@RequestMapping(value = "/router/{personId}", method = RequestMethod.GET)public Person router(@PathVariable Integer personId) {Person person = personService.getPerson(personId);return person;} }

  控制器比較簡單,直接注入PersonService,然后調用方法即可。按照以下步驟啟動集群:

  > 啟動hystrix-server項目

  > 啟動hystrix-provider項目

  > 啟動hystrix-invoker項目

  打開瀏覽器,訪問http://localhost:9000/router/0,輸出如下

  接下來,我們停止hystrix-provider項目,再訪問http://localhost:9000/router/0,輸出如下

  可以看到,程序直接調用了回退的方法。

轉載于:https://www.cnblogs.com/a-yuan/p/9573501.html

總結

以上是生活随笔為你收集整理的10 在Spring Cloud中使用Hystrix的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩av综合网 | 免费成人黄色 | 中文字幕免费在线看线人 | 夏目彩春娇喘呻吟高潮迭起 | 日本黄色性视频 | 韩国中文三级hd字幕 | 激情四射av| 亚洲色图一区二区三区 | 欧美片17c07.com | 亚洲精品久久久久久久蜜桃 | av成人动漫 | 国产亚洲激情 | 熊猫av| 日韩欧美亚洲一区 | 亚洲两性视频 | 一级特黄aaa大片 | 娇小激情hdxxxx学生 | 日本久久影视 | 亚洲一区二区国产精品 | 超碰日本| 大桥未久av一区二区三区中文 | 黑人操亚洲人 | 天堂中文在线观看视频 | 精品国产伦一区二区三 | 中文字幕人妻伦伦 | 久草黄色| 久久在线精品视频 | 日本三级吃奶头添泬 | 黑人操亚洲人 | 福利视频导航网 | 蜜桃av噜噜一区二区三区麻豆 | 欧美亚洲精品在线观看 | 一个色综合久久 | 国产视频在线观看免费 | 国产精品一区二区麻豆 | 欧美激情第1页 | 国产成人精品久久二区二区91 | 91成人一区二区三区 | 亚洲视频一区二区 | 欧美成人精品欧美一级私黄 | 亚洲狼人综合网 | 香蕉视频网址 | 国模无码视频一区 | 国产美女主播 | 一级片免费播放 | jizz美女| 狠狠干夜夜干 | 国产精品亚洲一区二区三区 | 久久精品国产亚洲av成人 | 超碰h | 奇米第四色在线 | 99热这里只有精品首页 | 亚洲第一黄网 | 亚洲精品一区二区三区精华液 | 强开小嫩苞一区二区三区网站 | av噜噜噜| 久久久久久91 | 日本三级一区二区 | 国产欧美精品在线观看 | 想要xx视频| 日产精品久久久久久久 | 神马三级我不卡 | 国产精品视频久久久 | 日日影院| av在线专区 | 亚洲成人av免费观看 | 久久大奶 | 亚洲成人伊人 | 妞干网这里只有精品 | 国产精品视频久久久 | 日韩在线观看网址 | av777777| 欧美精品一区二区三区在线播放 | 巨胸爆乳美女露双奶头挤奶 | 灌篮高手全国大赛电影 | 黄色福利网 | 日韩av中字 | 美女写真福利视频 | 中文字幕 国产精品 | 久久久国产一区二区 | 一区二区91| 日韩一区电影 | 国产一区精品视频 | 国产无遮挡又黄又爽 | 波多野在线观看 | wwwxxx日本免费 | 日韩理论片在线观看 | 国产精品av在线免费观看 | 牛牛影视一区二区 | 一区二区三区欧美精品 | 毛片无码一区二区三区a片视频 | 成人免费毛片观看 | 国产美女永久免费 | 国产第6页 | 台湾swag在线观看 | 日韩欧美大片在线观看 | 五月导航 | 国产11页 | 中文字幕一区二区免费 |