Spring Cloud Config

基本使用

服务端

1
2
3
4
5
6
7
8
9
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
1
2
3
4
5
6
7
spring.application.name=config-center
#git仓库地址
spring.cloud.config.server.git.uri=https://github.com/midkuro/config-center.git
#git分支
spring.cloud.config.label=master

eureka.client.service-url.defaultZone=http://euk1.com:7002/eureka/
1
2
3
4
5
6
7
8
@EnableConfigServer
@SpringBootApplication
public class AConfigApplication {

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

往git远程仓库上传一个文件config-client-dev.properties

然后可以通过发送请求查看内容

1
http://localhost:70/master/config-client-dev.properties
1
2
3
4
5
6
7
8
9
10
11
12
配置文件的匹配规则:
获取配置规则:根据前缀匹配
/{name}-{profiles}.properties
/{name}-{profiles}.yml
/{name}-{profiles}.json
/{label}/{name}-{profiles}.yml

name 服务名称
profile 环境名称,开发、测试、生产:dev qa prd
lable 仓库分支、默认master分支

匹配原则:从前缀开始。

客户端

1
2
3
4
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>

【application.properties】必须改名成【bootstrap.properties】,客户端启动时就可以去拉取配置,

1
2
3
4
5
6
7
8
9
10
11
spring.application.name=config-client
#直接URL方式查找配置中心
spring.cloud.config.uri=http://localhost:9999/
#通过注册中心查找
#spring.cloud.config.discovery.enabled=true
#注册中心的名称
#spring.cloud.config.discovery.service-id=config-center
#环境名称,dev环境--获取的配置:config-client-dev.properties
spring.cloud.config.profile=dev
#git分支
spring.cloud.config.label=master

配置刷新

手动刷新

1
2
3
4
5
<!-- 服务监控开启refresh 端口 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
1
2
3
management.endpoints.jmx.exposure.include=*
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always

添加actuator依赖并暴露refresh接口,然后在@Value需要刷新的类中增加@RefreshScope注解,最后config-client客户端发送POST请求

1
http://localhost:91/actuator/refresh

这种刷新方式只能刷新一个服务。

自动刷新

1
2
3
4
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>

引入依赖,安装RabbitMQ,然后在需要自动刷新的项目(config-client)中添加MQ的相关配置。

1
2
3
4
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

然后修改git上的配置文件后,触发请求通知服务刷新配置,本地服务刷新的时候会通知给其他服务也去刷新服务。

1
http://localhost:91/actuator/bus-refresh

最后更新: 2020年11月12日 22:47

原始链接: https://midkuro.gitee.io/2020/06/27/springcloud-config/

× 请我吃糖~
打赏二维码