SpringCloud項目集成Feign、Hystrix過程解析
這篇文章主要介紹了SpringCloud項目集成Feign、Hystrix過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
Feign的功能:這是個消費者,根據(jù)服務注冊在Eureka的ID去找到該服務,并調用接口
Hystrix的功能:熔斷器,假如A服務需要調用B服務的/cities接口獲取數(shù)據(jù),那就在A服務的controller里聲明@HystrixCommand,如果B服務的/cities接口掛了,就返回一個自定義的值
項目結構
[root@node01 cloud]# tree weather/ weather/ ├── Application.java #主程序啟動入口 ├── controller │ ├── CityController.java #控制路由,比如訪問127.0.0.1:8080/cities, 這里調用cityClient方法 └── service └── CityClient.java #具體方法的實現(xiàn),這里就具體實現(xiàn)cityClient方法(interface)
Application.java
package com.waylau.spring.cloud.weather;
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; #讓eureka能發(fā)現(xiàn)自己
import org.springframework.cloud.netflix.feign.EnableFeignClients; #引入feign
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients #聲明這個程序引入FeignClient
@EnableCircuitBreaker #聲明這個程序引入熔斷器
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
controller/CityController.java
package com.waylau.spring.cloud.weather.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import com.waylau.spring.cloud.weather.service.CityClient; #引用service/CityClient.java
@RestController
public class CityController {
@Autowired
private CityClient cityClient;
@GetMapping("/cities") #控制路由,比如訪問127.0.0.1:8080/cities
@HystrixCommand(fallbackMethod="defaultCities") #給另外一個服務設置hystrix熔斷器,并聲明fallbackMethod(回調方法)假如另外一個服務掛了,就調用defaultCities方法
public String listCity() {
// 通過Feign客戶端來查找
String body = cityClient.listCity(); #調用service里CityClient.java的cityClient方法,獲取城市數(shù)據(jù)
return body; #返回,訪問127.0.0.1:8080/cities就能返回城市數(shù)據(jù)
}
public String defaultCities() {
return "City Data Server is down!";
}
}
service/CityClient.java(消費者)
用Feign去另一個接口獲取數(shù)據(jù)
package com.waylau.spring.cloud.weather.service;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
@FeignClient("msa-weather-city") #msa-weather-city是msa-weather-city服務注冊到eureka的ID,通過這個ID就能訪問到msa-weather-city微服務
public interface CityClient {
@GetMapping("/cities") #調用msa-weather-city微服務里的/cities接口
String listCity(); #調用msa-weather-city微服務里的/cities接口里的listCity()方法
}
application.properties
spring.application.name: micro-weather-eureka-client-feign-hystrix eureka.client.serviceUrl.defaultZone: http://localhost:8761/eureka/ feign.client.config.feignName.connectTimeout: 5000 feign.client.config.feignName.readTimeout: 5000
測試,條件為另一個服務可用時,我們是能調用的

測試.條件為另一個服務不可以時,我們是不能調用的,所以fallback

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Java 用Prometheus搭建實時監(jiān)控系統(tǒng)過程詳解
這篇文章主要介紹了用Prometheus搭建實時監(jiān)控系統(tǒng)過程詳解之上帝之火,普羅米修斯的崛起,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07
Java getRealPath("/")與getContextPath()區(qū)別詳細分析
這篇文章主要介紹了Java getRealPath("/")與getContextPath()區(qū)別詳細分析,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-08-08
JDK動態(tài)代理之ProxyGenerator生成代理類的字節(jié)碼文件解析
這篇文章主要為大家詳細介紹了JDK動態(tài)代理之ProxyGenerator生成代理類的字節(jié)碼文件,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-02-02
SpringBoot3利用AOP實現(xiàn)IP黑名單功能
在Web應用開發(fā)中,控制對特定IP地址的訪問權限是一個常見的需求,通過實現(xiàn)IP黑白名單功能,我們可以允許某些IP地址訪問應用,同時拒絕其他IP地址的訪問,本文將詳細介紹SpringBoot3利用AOP實現(xiàn)IP黑名單功能,并附上相應的代碼片段,需要的朋友可以參考下2024-09-09

