SpringCloud之搭建高可用配置中心Config--动态刷新bus/refresh

第一步:先在自己springcloud项目基础上,新加一个子服务(spring-cloud-config配置中心--服务端),加入依赖:


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

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
            org.springframework.cloud
            spring-cloud-sleuth-zipkin-stream
        
        
            org.springframework.cloud
            spring-cloud-starter-stream-rabbit
        

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

添加application.properties配置:

#服务注册与发现
eureka.client.serviceUrl.defaultZone=http://server:8030/eureka/,http://server1:8029/eureka/
#链路追踪注册发现
spring.zipkin.base-url=http://localhost:9411

spring.application.name=spring-cloud-config
server.port=7001

spring.cloud.config.server.git.uri=https://gitee.com/****/springcloudconfig
spring.cloud.config.server.git.search-paths=config-repo
spring.cloud.config.server.git.username=****
spring.cloud.config.server.git.password=****

#rabbitmq配置
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=****
spring.rabbitmq.password=****

#动态刷新配置 ---需要忽略权限拦截
management.security.enabled=false

在ConfigApplication.java启动类上加上注解:

@EnableConfigServer
@EnableEurekaClient
@SpringBootApplication
public class ConfigApplication {

	public static void main(String[] args) {
		SpringApplication.run(ConfigApplication.class, args);
	}
}

至此,配置中心--服务端搭建完毕


第二步:将其他子项目改进成配置中心--客户端(Config-client)

添加依赖:


        
            org.springframework.cloud
            spring-cloud-starter-config
        
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        
        
            org.springframework.cloud
            spring-cloud-starter-bus-amqp
        
        
            org.springframework.retry
            spring-retry
        
        
            org.springframework.boot
            spring-boot-starter-aop
        

然后将配置文件名称由application.properties改为→bootstrap.properties,添加配置(从配置中心服务端获取数据的配置):

#获取配置
#spring.cloud.config.label=master
spring.cloud.config.profile=test
spring.cloud.config.discovery.service-id=spring-cloud-config
spring.cloud.config.discovery.enabled=true
#动态刷新配置
spring.cloud.bus.refresh.enabled=true
#动态刷新配置 ---需要忽略权限拦截
management.security.enabled=false
#配置重试机制
spring.cloud.config.retry.initial-interval=2000
spring.cloud.config.retry.max-attempts=2000
spring.cloud.config.retry.max-interval=2000
spring.cloud.config.retry.multiplier=1.2
spring.cloud.config.fail-fast=true

将客户端的application.java启动类上加上注解:

@EnableDiscoveryClient

至此:客户端的配置,将也会从配置中心--服务端指定的git地址去拿,例如我的配置中心--客户端service-id=spring-cloud-zuul

SpringCloud之搭建高可用配置中心Config--动态刷新bus/refresh_第1张图片

至此,如果修改配置,在发一个post请求:localhost:8080/refresh,配置将会更新。

但是没有达到预期,也就是不需要手动去发请求,而是修改配置就能够应用。


划重点:怎么实现全自动更新配置呢?

第一步:去git仓库https://gitee.com/****/springcloudconfig/***,进入仓库管理:

添加webHooks:

SpringCloud之搭建高可用配置中心Config--动态刷新bus/refresh_第2张图片

这样,当修改配置后,git会自动发请求去你指定的公网的/bus/refresh实现动态刷新配置了。

你可能感兴趣的:(SpringCloud)