SpringCloud config service+Event Bus+SVN实现自动更新配置_第1页
SpringCloud config service+Event Bus+SVN实现自动更新配置_第2页
SpringCloud config service+Event Bus+SVN实现自动更新配置_第3页
SpringCloud config service+Event Bus+SVN实现自动更新配置_第4页
SpringCloud config service+Event Bus+SVN实现自动更新配置_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1. 创建config service服务引入Maven包:<dependency>   <groupId>org.springframework.cloud</groupId>   <artifactId>spring-cloud-config-server</artifactId>  </dependency>  <dependency>         <groupId>org.spr

2、ingframework.cloud</groupId>         <artifactId>spring-cloud-starter-bus-amqp</artifactId>     </dependency>  <dependency>   <groupId>org.springframework.boot</groupId>   <artifactId>spr

3、ing-boot-starter-web</artifactId>  </dependency>perties# 刷新时,关闭安全验证management.security.enabled=false#Rabbitmqspring.rabbitmq.host=22spring.rabbitmq.port=5672spring.rabbitmq.username=hjyspring.rabbitmq.password=hjyapplication.ymlserver:  port: 7001spring:

4、  application:    name: config-server  cloud:    config:      enabled: true      server:        svn:          uri: 39/svn/          username: gongzhong

5、0;         password: gongzhong          searchPaths: springcloud        #git:        # uri:         default-label: config  profiles:    active: subversion至此,config service 服务搭建完成。2

6、. 给SVN服务器增加hook登录39服务器,进入svn的仓库目录下的hooks目录:/usr/svnrepos/hnapay2/hooks从post-commit.tmpl拷贝一份post-commit文件:cp post-commit.tmpl post-commit修改post-commit文件内容为:#!/bin/shcurl -X POST 52:7001/bus/refresh其中:52:7001为config-server的请求IP及端口修改post-commit文件为可执行文件:chmod +x post-com

7、mit到此就实现了配置中心的配置修改后,其他所有服务均自动重新获取配置。注意:只有引入了spring-cloud-starter-bus-amqp模块的服务才会重新获取配置=扩展:为指定项目进行刷新原理:根据SVN的hooks获取到被update的配置文件目录,再通过/bus/refresh?destination=customers:*指令进行刷新要求:SVN的目录按serviceId命名,当然也可以在svn的hooks脚本中进行目录与server对应。如下图是我测试时的一个配置目录:其中:gateway与gateway服务同名,gateway-zuul与gateway-zuul服务同名修改

8、hooks脚本为以下内容:#!/bin/shREPOS="$1"REV="$2"#通过look获取发生变更的文件目录SVNLOOK=/usr/bin/svnlook#发生变更的文件目录集合CHANGEDDIRS=$($SVNLOOK dirs-changed $REPOS)#发生变更的文件目录集合的第一条MASTERDIR=$(echo "$CHANGEDDIRS" | head -1)#循环while "$CHANGEDDIRS" != "" ;do   #获取最后一个目录

9、名称,即服务名称   PROJECT=$(echo $MASTERDIR | awk -F / 'print $(NF-1)')   echo $PROJECT >> /usr/svnrepos/hnapay2/hooks/logs   #发送刷新请求给config server   #将svn目录名称与服务名称对应   if "$PROJECT" = "gateway" ; then      P

10、ROJECT="exp-gateway"   fi   curl -X POST 52:7001/bus/refresh?destination=$PROJECT:*   #删除已经发送请求的   CHANGEDDIRS=$(echo "$CHANGEDDIRS" | grep -v "$MASTERDIR")   #获取最新的发生变更的文件目录   MASTERDIR=$(echo &

11、quot;$CHANGEDDIRS" | head -1)done优化版本:#!/bin/shREPOS="$1"REV="$2"SVNLOOK=/usr/bin/svnlookCHANGEDDIRS=$($SVNLOOK dirs-changed $REPOS)echo $CHANGEDDIRS >> /usr/svnrepos/hnapay2/hooks/logsMASTERDIR=$(echo "$CHANGEDDIRS" | head -1)#i=0while "$CHANGEDDIRS&quo

12、t; != "" ;do   echo $(echo $MASTERDIR | awk -F / 'print $2') >> /usr/svnrepos/hnapay2/hooks/logs   #获取行的最后第二列,$NF为最后一列   #PROJECT=$(echo $MASTERDIR | awk -F / 'print $(NF-1)')   #获取行的第二列   PROJECT=$(echo $MASTERDIR | a

13、wk -F / 'print $2')   #echo $PROJECT >> /usr/svnrepos/hnapay2/hooks/logs   #将SVN目录与服务名称对应   if "$PROJECT" = "gateway" ; then      PROJECT="exp-gateway"   fi   #将PROJECT放入数组   #arr$i

14、=$PROJECT   #i=expr $i + 1   #连接超时时间2s,数据传输超时时间5s   curl -connect-timeout 2 -m 5 -X POST 52:7001/bus/refresh?destination=$PROJECT:* >> /usr/svnrepos/hnapay2/hooks/logs 2>&1   if "$?" != "0" ; then    &#

15、160; echo "got error to refresh $PROJECT" >> /usr/svnrepos/hnapay2/hooks/logs   fi   CHANGEDDIRS=$(echo "$CHANGEDDIRS" | grep -v "$MASTERDIR")   MASTERDIR=$(echo "$CHANGEDDIRS" | head -1)done#echo "$arr" >> /

16、usr/svnrepos/hnapay2/hooks/logs#curl -X POST 52:7001/bus/refresh?destination=$PROJECT:*echo "" >> /usr/svnrepos/hnapay2/hooks/logsecho "=" >> /usr/svnrepos/hnapay2/hooks/logsecho "" >> /usr/svnrepos/hnapay2/hooks/logs=spring cloud config 目录匹配spring cloud config 的目录匹配规则如下:/application/profile/label/application-profile.yml/label/appli

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论