第一步:先在自己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
至此,如果修改配置,在发一个post请求:localhost:8080/refresh,配置将会更新。
但是没有达到预期,也就是不需要手动去发请求,而是修改配置就能够应用。
划重点:怎么实现全自动更新配置呢?
第一步:去git仓库https://gitee.com/****/springcloudconfig/***,进入仓库管理:
添加webHooks:
这样,当修改配置后,git会自动发请求去你指定的公网的/bus/refresh实现动态刷新配置了。