1. 程式人生 > >Spring Boot 2.0+整合Eureka+Ribbon+Config+Feign+Zuul+Hystrix+ActiveMq等

Spring Boot 2.0+整合Eureka+Ribbon+Config+Feign+Zuul+Hystrix+ActiveMq等

基於Spring Boot 2.0+

簡介

一個簡單的Spring Cloud基礎框架,整合config/Eureka/Hystrix/ActiveMQ等元件

工程介紹

工程 描述
cloud N/A 父節點
cloud-client 9091 使用者服務
cloud-client-admin 9092 後臺管理程式
cloud-client-app 9093 手機應用程式介面
cloud-client-pc 9094 web客戶端
cloud-client-partner 9095 與第三方互動客戶端
cloud-common N/A 公共元件
cloud-config-server 9090 配置中心
cloud-data 8099 資料服務,提供基礎的資料
cloud-eureka-server 8761 註冊中心
cloud-hystrix 9099 hystrix dashboard& Turbine
cloud-mq-producer 8077 ActiveMQ服務端
cloud-mq-consumer 8078 ActiveMQ消費端
cloud-zuul 7777 API GateWay

技術棧

技術 版本 應用場景
Spring Boot 2.0.3.RELEASE 基礎平臺
Spring Cloud Dependencies Finchley.RELEASE 基礎平臺
Eureka N/A 註冊中心
Ribbon N/A 客戶端負載均衡
Config N/A 配置中心
Zuul N/A 閘道器
Hystrix N/A 熔斷器
ActiveMq N/A 訊息佇列
Mybatis N/A 資料庫中介軟體
PageHelper N/A 分頁控制元件
LayUI N/A 後臺管理程式基礎框架

示例圖

Eureka + Ribbon + Config + Zuul + Hystrix 示例圖點選檢視

專案地址

GitHub

啟動說明

  • 建議流程啟動順序 
    cloud-eureka-server -> cloud-zuul -> cloud-data -> cloud-client

  • 請求攔截 
    請求:http://localhost:9091/add 
    系統並未響應任何資訊,檢視控制檯報錯
    the user is null, please access from gateway or check user info 
    這說明攔截器起到了作用,對於沒有使用者資訊這樣不合法的請求進行了攔截
    再請求:http://localhost:7777/cloud-client-server/getContextUserId 
    {"businessId":1,"exceptionType":"com.spring.cloud.common.exception.BaseException","code":10001,"businessMessage":"the user is null, please check","codeEN":"AuthEmptyError"} 
    這是自定義了一個異常,沒有傳使用者資訊,因為這裡在閘道器做了攔截,如果請求頭裡沒有user_key則鑑權不通過

    Client(Controller) --> Client(Services) 這裡@Autowired DataService --> DataService通過註解@FeignClient(name = "cloud-data-server", fallback= UserClientFallback.class 指向了cloud-data-server下的函式,"fallback"指向如果無法響應時的熔斷器)

  • 即:在請求伺服器時必須傳遞user_key / userid (這裡我設定了需要傳遞這些引數)

  • demo (新增一個公司資訊) 

    • 新增公司表指令碼 
    CREATE TABLE company(
      c_id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
      c_name VARCHAR(255) NOT NULL ,
      c_des VARCHAR(255) NOT NULL ,
      c_code VARCHAR(255) NOT NULL
    ) ENGINE=INNODB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8;
    

http://localhost:7777/cloud-client-server/insertCompany 

  • 請求頭中必須要加 user_key和userid,請注意大小寫