Spring Cloud Config 之svn配置仓库与动态刷新(客户端自动刷新)

来源:互联网 发布:程序员30岁后的出路 编辑:程序博客网 时间:2024/04/30 17:47
终于进入正文了,上篇完成了手动刷新,貌似这种手动刷新不是太好,因为你怎么知道什么时候去更新配置?我们的初衷是只要配置文件目录下的文件改变了,就要重新加载配置,也就是在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提交变慢)
至此,自动刷新完成
结束了,完了,拜拜
阅读全文
0 0