問題
由于適應(yīng)公司不斷發(fā)展帶來的,售后問題,要求我們要對所有服務(wù)進(jìn)行,主動檢查.避免服務(wù)異常,造成損失。在這里將該項目的思路及springboot的自動化配置使用分享給大家,希望共同進(jìn)步。學(xué)習(xí)。有共同愛好的童鞋,可以點擊關(guān)注小編,如果看完本文想學(xué)習(xí)下源碼,可以私信我,發(fā)送autoconfig關(guān)鍵字獲取,地址。
目前的方式是這樣:
網(wǎng)關(guān)部門定時掃描各個服務(wù),進(jìn)行監(jiān)控狀態(tài)檢查,并通知給指定負(fù)責(zé)人.
實現(xiàn)邏輯:
1. 要求每個線上服務(wù)暴露一個/status 地址,并返回指定json,將項目中依賴的數(shù)據(jù)庫連接信息返回
實現(xiàn)要求:
1. 組件式開發(fā)
2. 引入即可用,自動監(jiān)控項目中數(shù)據(jù)庫連接
3. 暴露一個指定的可供網(wǎng)關(guān)掃描的地址
技術(shù)實現(xiàn)方式:
1. 引入spring-boot-autoconfigure自動配置
2. 引入spring-boot-actuator 使用EndPoint 定制暴露給網(wǎng)關(guān)的掃描地址
1. 在autoconfigure中實現(xiàn)定制url的方式是這樣的,而不是使用@RequestMapping注解,id就是我們的url,其他屬性見注釋,非常清楚
2. 加入配置信息,交給合項目負(fù)責(zé)人維護(hù)
3 .導(dǎo)入我們定制的節(jié)點
4. 數(shù)據(jù)庫的健康我們按照Spring的套路來
首先定義個接口,然后是抽象模板類,然后是各個數(shù)據(jù)源的實現(xiàn)類
Mongo檢查
消息隊列檢查
5. 將以上數(shù)據(jù)檢查組件都加入到配置中
注意,要判斷,如果服務(wù)中沒有引入過 Mongodb等數(shù)據(jù)源,就不要注入,否則強制注入會保存,這里要注意下,這幾個注解的意思。這里就不介紹了。
6 . 將這些配置交給autoconfigure 管理,通過服務(wù)中的springboot main 啟動中@EnableAutoConfiguration 引入,我們組建中的配置。
7 .重點來了,看我們的工具類怎么寫的,邏輯就是
從上下文中獲取到我們項目中依賴的數(shù)據(jù)源,首先要判斷是否存在,并實現(xiàn)IStatus繼承抽象接口中status()方式返回boolean來判斷是否數(shù)據(jù)源連接狀態(tài),并返回json給網(wǎng)關(guān),執(zhí)行EndPoint中的invoke方法返回
8 .使用方法
application.yml 中添加
應(yīng)用啟動驗證
接口驗證
看到這里,基本就介紹完了,是不是很簡單,其實沒什么難點,spring是契約式開發(fā),沒有會不會一說,只有會不會用,看的多了就會了。最后感謝你的閱讀!感興趣的同學(xué)可以關(guān)注小編,會不斷分享實戰(zhàn)知識給大家。如果你發(fā)現(xiàn)有錯誤,請?zhí)岢鰧氋F意見,會及時改正!謝謝