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 示例圖點選檢視
專案地址
啟動說明
-
建議流程啟動順序
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
,請注意大小寫
-
redis快取demo
http://localhost:7777/cloud-client-server/redisTest -
activemq佇列demo
http://localhost:8077//producer/send請求放入佇列 -
後臺管理程式(主鍵查詢使用者)
http://127.0.0.1:7777/admin/selectUser -
後臺管理程式(新增使用者)
http://127.0.0.1:7777/admin/insertUser -
後臺管理程式(根據主鍵刪除使用者-單條)
http://127.0.0.1:7777/admin/deleteUser -
後臺管理程式(修改使用者資訊)
http://127.0.0.1:7777/admin/updateUser -
後臺管理程式(訪問首頁)
http://localhost:7777/admin/index