springcloud笔记六分布式配置中心config
Posted 今夜月色很美
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springcloud笔记六分布式配置中心config相关的知识,希望对你有一定的参考价值。
官网文档https://cloud.spring.io/spring-cloud-config/reference/html/
config分布式配置中心搭建
pom.xml
<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>
application.yaml文件
spring:
application:
name: cloud-config-center
cloud:
config:
label: main
server:
git:
uri: https://github.com/liuyunzhen/springcloud-config.git
search-paths:
- springcloud-config
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka/
spring.cloud.config.server.git.uri配置github上配置文件项目的仓库地址
spring.cloud.config.server.git.search-paths仓库名
label分支名称
启动类添加@EnableConfigServer注解
client客户端项目从config中读取配置
使用程序引导配置文件bootstrap.yml
pom.xml增加maven坐标
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
bootstrap.yaml配置
spring:
application:
name: payment-service
cloud:
config:
label: main
name: config
profile: dev
uri: http://localhost:3344
动态刷新问题
1.配置文件内容调整
修改github远程配置文件后,config分布式配置中心会立刻更新,但client读取到的内容无变化,除非client模块重启。
2.不重启手动刷新配置方法
client客户端添加bootstrap.yaml配置
# 暴漏刷新端点
management:
endpoints:
web:
exposure:
include: "*"
client客户端controller添加@RefreshScope注解
注意:如果多个controller使用了待刷新配置属性,每个controller上都需要加上@RefreshScope
使用post方式调用client客户端actuator刷新配置接口
http://localhost:8001/actuator/refresh
刷新成功:
[
"config.client.version",
"config.info"
]
安装rabbitmq
1、配置 epel
yum install epel-release
2、安装
yum install rabbitmq-server
3、启动
# 启动
systemctl start rabbitmq-server
# 状态
systemctl status rabbitmq-server
# 关闭
systemctl stop rabbitmq-server
4、配置网页插件(从网页登陆端口号:15672)
# 启用插件
rabbitmq-plugins enable rabbitmq_management
5、登录
# 默认账号guest/guest
http://192.168.1.72:15672
动态刷新全局广播
配置中心增加maven
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
配置中心增加yaml配置
spring:
rabbitmq:
host: 192.168.137.200
port: 5672
username: guest
password: guest
# 暴露bus刷新配置的端点
management:
endpoints:
web:
exposure:
include: "bus-refresh"
client客户端项目增加maven坐标
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
client客户端项目增加yaml配置
spring:
rabbitmq:
host: 192.168.137.200
port: 5672
username: guest
password: guest
调用配置中心刷新端点
全局刷新
http://localhost:3344/actuator/bus-refresh
定点刷新(payment-service:8001是服务名和端口)
http://localhost:3344/actuator/bus-refresh/payment-service:8001
遇到问题
错误一:
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Sat Jun 12 16:53:22 CST 2021
There was an unexpected error (type=Not Found, status=404).
No such label: master
org.springframework.cloud.config.server.environment.NoSuchLabelException: No such label: master
分支不存在,spring.cloud.config.label修改为正确的分支即可
错误二:
bus配置rabbitmq之后,中心和消费client启动后,rabbitmq管理界面no queue
检查发现由于maven坐标是看教程的过程中手敲,不小心导错了包,将springcloud敲成了spring-boot,错误的maven坐标
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-bus-amqp</artifactId>
</dependency>
正确的maven坐标
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
以上是关于springcloud笔记六分布式配置中心config的主要内容,如果未能解决你的问题,请参考以下文章
企业分布式微服务云SpringCloud SpringBoot mybatis 分布式配置中心
企业级 SpringCloud 教程 分布式配置中心(Spring Cloud Config
企业分布式微服务云SpringCloud SpringBoot mybatis 分布式配置中心(Spring Cloud Config)