1. 程式人生 > >Spring Cloud Config 之svn配置倉庫與動態重新整理(客戶端自動重新整理)

Spring Cloud Config 之svn配置倉庫與動態重新整理(客戶端自動重新整理)

終於進入正文了,上篇完成了手動重新整理,貌似這種手動重新整理不是太好,因為你怎麼知道什麼時候去更新配置?我們的初衷是隻要配置檔案目錄下的檔案改變了,就要重新載入配置,也就是在svn倉庫的config目錄下的配置檔案改動自動重新整理 目前來看就兩個問題:
1:我怎麼確定是哪個檔案改動了,如果svn改動後提交後我能知道,哪個檔案或哪個目錄改了是不是就可以做了
2:怎麼自動重新整理,這裡肯定不能去手動去刷,應該是提交完成後,自動重新整理 ok,開始解決問題,神奇的svn鉤子函式。
svn存在一個這樣的機制,在svn倉庫目錄下有一個hooks目錄裡面放著各種鉤子指令碼(window下是.bat檔案)如下:
預設情況下是不開啟的,所有的.tmpl都是說明檔案,各種鉤子的作用以及執行時間都從名字可以看出。要想讓svn執行某一個只要建立對應的.bat檔案,並寫下自己的邏輯即可。
這裡我們建立post-commit.bat 就是在提交完成後去執行這個鉤子。
在hooks目錄下建立post-commit.bat檔案 檔案中寫上如下程式碼 set MY=c:/svnlook.exe dirs-changed C:\svn\cgj
%MY% >d:/log.txt
set /p a=<d:/log.txt
if "%a%" == "config/" ( C:/curl.exe -X POST http://localhost:9999/refresh)
解釋:
set MY=c:/svnlook.exe dirs-changed C:\svn\cgj  svn提交完成得到變化的目錄並付給變數MY,此處為svnlook 命令
%MY% >d:/log.txt 把變數MY的值寫入檔案
set /p a=<d:/log.txt 從檔案讀取變化目錄內容
if "%a%" == "config/" ( C:/curl.exe -X POST http://localhost:9999/refresh)  判斷目錄是不是config/如果是則進行重新整理 這裡需要安裝curl 這裡有一個小疑問,我直接把MY變數和"config/"比較一直出錯,不知道為什麼 ok,儲存,程式碼不用改變,分別執行服務端與客戶端
先訪問,改了配置檔案在訪問,提交後不用手動重新整理就能獲取到最新的配置。(svn提交變慢)
至此,自動重新整理完成
結束了,完了,拜拜