SpringCloud H版 Config+Bus 实现全局配制刷新
一、Spring cloud Bus
在上篇文章中我们介绍了Spring cloud config的使用,但是应该可以发现一个问题,就是我们在修改完 git 中的配制后,让每个服务生效,需要按个调用刷新接口,如果服务非常多的时候,岂不是非常难受,因此本篇就来介绍下Spring cloud Bus + Spring cloud config实现自动刷新全部服务的功能。
Spring Cloud Bus是用来将分布式系统的节点与轻量级消息系统链接起来的框架, 它整合了Java的事件处理机制和消息中间件的功能。 Spring Clud Bus目前支持RabbitMQ和Kafka。
二、Spring cloud 引入 Bus
首先启动一台RabbitMQ
在上篇文章的基础上,我们对项目进行修改:
1. 修改 config server端
在pom中添加依赖:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency>
配制文件修改:
spring: application: name: config-center #注册进Eureka服务器的微服务名 cloud: config: server: git: # uri: git@gitee.com:app94/cloud-config.git #GitHub上面的git仓库名字 uri: https://gitee.com/app94/cloud-config.git #GitHub上面的git仓库名字 username: $(username) password: ${password} ####搜索目录 search-paths: - application ####读取分支 label: master rabbitmq: host: 192.168.40.1 port: 5672 username: guest password: guest ##rabbitmq相关配置,暴露bus刷新配置的端点 management: endpoints: #暴露bus刷新配置的端点 web: exposure: include: bus-refresh
主要加入了rabbitmq配制和 暴露bus刷新配置的端点。
2. 修改 config client端
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency>
配制文件修改:
spring: application: name: config-client cloud: #Config客户端配置 config: label: master #分支名称 name: application #配置文件名称 profile: consumer #读取后缀名称 上述3个综合:master分支上config-dev.yml的配置文件被读取http://config-3344.com:3344/master/config-dev.yml # uri: http://localhost:8070 #配置中心地址k discovery: enabled: true service-id: CONFIG-CENTER rabbitmq: host: 192.168.40.1 port: 5672 username: guest password: guest management: endpoint: shutdown: enabled: false endpoints: web: exposure: include: "*"
主要加入了rabbitmq配制和 暴露端点。
三、测试
先查看下当前的配制,调用测试接口,查看打印日志:
修改 Git 中的配制内容: 使用PostMan调用接口:http://localhost:8070/actuator/bus-refresh 注意调用的是client-server的地址。
然后再次调用测试接口,查看打印日志:
下一篇:
第一章 为什么使用微服务架构!