springcloud config 配置文件管理动态刷新

配置文件管理server端

当修改一个配置文件,我们需要重新打包项目或重新启动服务才能生效;springcloud的config实现了配置文件的统一管理,当配置文件修改后提交Git后系统会自动刷新获取修改后的配置文件(springcloud bus 会对外提供一个接口,即/bus/refresh, 将这个接口配置到Git的webhook上,当git上的内容有所变动时,它就会自动调用这个接口,通知config server端,config server会发布更新消息到消息总线的消息队列中,总线接到消息会通知连接到它的客户端,客户端收到消息会重新请求服务器端的最新配置,从而进行配置文件的更新)。

eureka集群搭建

rabbitmq的安装配置

  • 将配置文件上传至Git上

新建一个maven项目:

建好的项目结构如下:

  • pom文件相关依赖
"1.0" encoding="UTF-8"?>
"http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   4.0.0

   cloud
   cloud-config-server
   0.0.1-SNAPSHOT
   jar

   cloud-config-server
   Demo project for Spring Boot

   
      org.springframework.boot
      spring-boot-starter-parent
      1.5.10.RELEASE
       
   

   
      UTF-8
      UTF-8
      1.8
      Greenwich.M3
   

   
      
         org.springframework.cloud
         spring-cloud-config-server
      
      
         org.springframework.cloud
         spring-cloud-starter-eureka
      
      
         org.springframework.cloud
         spring-cloud-starter-bus-amqp
      
   

   
      
         
            org.springframework.cloud
            spring-cloud-dependencies
            Dalston.SR3
            <type>pomtype>
            import
         
         
            org.springframework.cloud
            spring-cloud-starter-eureka-server
            
               
                  com.fasterxml.jackson.dataformat
                  jackson-dataformat-xml
               
            
         
      
   

   
      ${project.artifactId}
      
         
            org.apache.maven.plugins
            maven-resources-plugin
            
               UTF-8
            
         
         
            org.apache.maven.plugins
            maven-compiler-plugin
            
               <source>1.8source>
               1.8
               UTF-8
            
         
         
            org.springframework.boot
            spring-boot-maven-plugin
         
      
   
   
      
         spring-milestones
         Spring Milestones
         https://repo.spring.io/milestone
         
            false
         
      
   

复制代码
  • 启动文件
@EnableDiscoveryClient
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {

   public static void main(String[] args) {
      SpringApplication.run(ConfigServerApplication.class, args);
   }
}
复制代码
  • 服务器端配置文件详情
server.port=8081
spring.cloud.config.server.git.uri=https://github.com/castanea-kang/config-repo.git
spring.cloud.config.server.git.searchPaths=cloud-config-repo
spring.application.name=cloud-config
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.service-id=cloud-config

spring.rabbitmq.host=114.115.243.135
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

eureka.client.serviceUrl.defaultZone=http://eureka01:8080/eureka/
#eureka.instance.prefer-ip-address=true       
#eureka.instance.ip-address=114.115.243.135  #配置从eureka注册中心访问接口的ip
#eureka.instance.status-page-url-path=/cloud-config/test/  #接口访问路径
management.security.enabled=false   #是否开启安全认证
复制代码
  • 启动config server端可以再eureka注册中心找到该服务,如下图:

可以通过访问地址http://114.115.243.135:8081/cloud-config/test/ 得到数据:

config客户端相关配置

  • pom配置文件相关依赖

 org.springframework.cloud
 spring-cloud-starter-config


 org.springframework.cloud
 spring-cloud-starter-eureka


 org.springframework.boot
 spring-boot-starter-actuator



 org.springframework.cloud
 spring-cloud-starter-bus-amqp

复制代码
  • 配置文件详情bootstrap.properties
spring.application.name=cloud-config
spring.cloud.config.profile=test
eureka.client.serviceUrl.defaultZone=http://114.115.243.135:8080/eureka/
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.service-id=cloud-config
eureka.client.register-with-eureka=false

spring.rabbitmq.host=114.115.243.135
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

management.security.enabled=false
spring.cloud.bus.trace.enabled=true
复制代码
  • 利用git的webhook实现实时更新通知,当向git进行事件操作时,进行配置文件刷新应用。

注:如果出现配置正常刷新日志打印正常,但是并没有刷新,在config client 控制层上加上注解

@RefreshScope

转载于:https://juejin.im/post/5bff9fd26fb9a049bc4c5fd9

你可能感兴趣的:(springcloud config 配置文件管理动态刷新)