SpringCloud 2020.0.4 系列: Bus
目录
1. 概述
老话说的好:会休息的人才更会工作,身体是革命的本钱,身体垮了,就无法再工作了。
言归正传,之前我们聊了 SpringCloud 的 分布式配置中心 Config,文章里我们聊了config配置的动态刷新,但这个动态刷新,一次只能刷新一个 Config Client 节点,如果服务节点少还好,如果业务多了,有成百上千个服务节点,再一台一台刷新,就不合适了。
因此,今天我们来聊聊 SpringCloud的消息总线组件 Bus,Bus 组件可以借助MQ中间件,向所有的 Config Client 发送刷新广播,只需要调用一个接口,就可以刷新整个集群的Config 配置。
闲话不多说,直接上代码。
2. Git 准备
1)创建一个 repository,用于放置配置文件,例如:my-config-repo
2)创建 my-bus-client 文件夹
3)在 my-bus-client 文件夹下,新建 my-bus-client-dev.yml 配置文件,内容如下:
-
info:
-
profile: dev
-
-
name: zhuifengren
-
desc: hello dev
3. Config Server 引入 Bus 组件
3.1 主要依赖
-
<dependency>
-
<groupId>org.springframework.cloud</groupId>
-
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
-
</dependency>
-
<dependency>
-
<groupId>org.springframework.cloud</groupId>
-
<artifactId>spring-cloud-config-server</artifactId>
-
</dependency>
-
<dependency>
-
<groupId>org.springframework.cloud</groupId>
-
<artifactId>spring-cloud-starter-bootstrap</artifactId>
-
<version>3.0.2</version>
-
</dependency>
-
<dependency>
-
<groupId>org.springframework.cloud</groupId>
-
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
-
</dependency>
-
<dependency>
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-starter-actuator</artifactId>
-
</dependency>
3.2 application.yml 配置
-
server:
-
port: 42000
-
-
spring:
-
application:
-
name: my-bus-server
-
rabbitmq:
-
addresses: 192.168.1.22:5672,192.168.1.12:5672,192.168.1.11:5672 # rabbitmq 集群的地址
-
username: guest
-
password: guest
-
virtual-host: /
-
connection-timeout: 16000
-
cloud:
-
config:
-
server:
-
git:
-
uri: https://github.com/w84422/my-config-repo.git # git地址
-
force-pull: true # 强制拉取资源文件
-
default-label: main # 默认拉取的分支
-
search-paths: '{application}' # 将配置文件放到接入方服务名称对应的文件夹下,这种写法,只在config组件设置生效
-
-
management:
-
endpoints:
-
web:
-
exposure:
-
include: '*'
-
endpoint:
-
health:
-
show-details: always
-
-
eureka:
-
client:
-
service-url:
-
defaultZone: http://zhuifengren1:35000/eureka/,http://zhuifengren2:35001/eureka/ # Eureka Server的地址
3.3 启动类增加注解
-
-
-
-
public class MyBusServerApplication {
-
-
public static void main(String[] args) {
-
SpringApplication.run(MyBusServerApplication.class, args);
-
}
-
}
3.4 启动 Config Server
启动 Config Server
4. Config Client 引入 Bus 组件
4.1 主要依赖
-
<dependency>
-
<groupId>org.springframework.cloud</groupId>
-
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
-
</dependency>
-
<dependency>
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-starter-web</artifactId>
-
</dependency>
-
<dependency>
-
<groupId>org.springframework.cloud</groupId>
-
<artifactId>spring-cloud-starter-config</artifactId>
-
<version>3.0.4</version>
-
</dependency>
-
<dependency>
-
<groupId>org.springframework.cloud</groupId>
-
<artifactId>spring-cloud-starter-bootstrap</artifactId>
-
<version>3.0.2</version>
-
</dependency>
-
<dependency>
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-starter-actuator</artifactId>
-
</dependency>
-
<!-- rabbitmq -->
-
<dependency>
-
<groupId>org.springframework.cloud</groupId>
-
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
-
</dependency>
4.2 bootstrap.yml 配置
-
server:
-
port: 43000
-
-
spring:
-
application:
-
name: my-bus-client
-
rabbitmq:
-
addresses: 192.168.1.22:5672,192.168.1.12:5672,192.168.1.11:5672
-
username: guest
-
password: guest
-
virtual-host: /
-
connection-timeout: 16000
-
cloud:
-
config:
-
profile: dev # 拉取的配置文件
-
label: main # 拉取的分支
-
name: my-bus-client # 指定远程获取配置文件的 application,默认会取 spring.application.name
-
discovery:
-
enabled: true
-
service-id: my-bus-server # config服务的服务名称
-
-
myDesc: ${desc}
-
-
eureka:
-
client:
-
service-url:
-
defaultZone: http://zhuifengren1:35000/eureka/,http://zhuifengren2:35001/eureka/ # Eureka Server的地址
-
-
management:
-
endpoints:
-
web:
-
exposure:
-
include: '*'
-
endpoint:
-
health:
-
show-details: always
4.3 启动类增加注解
-
-
-
public class MyBusClientApplication {
-
-
public static void main(String[] args) {
-
SpringApplication.run(MyBusClientApplication.class, args);
-
}
-
}
4.4 增加用于实验的 Controller 类
-
-
-
public class MyBusClientRefreshController {
-
-
-
private String profile;
-
-
private String name;
-
-
private String desc;
-
-
-
public String getInfo() {
-
-
String info = "profile:" profile "<br>";
-
info = "name:" name "<br>";
-
info = "desc:" desc "<br>";
-
-
return info;
-
}
-
}
4.5 启动 Config Client 服务,并进行验证
4.5.1 启动 Config Client 服务
启动两个或多个 Config Client 服务
4.5.2 访问 Controller 接口,获取配置信息
GET http://localhost:43000/refresh-info
4.5.3 修改 Git 上的配置
将 name 改为 zhangsan
4.5.4 执行bus配置刷新接口
在 Config Server 或 任意 Config Client 节点,执行 bus 配置刷新接口
POST http://localhost:42000/actuator/busrefresh
4.5.5 在所有 Config Client 节点调用 Controller 接口,重新获取信息
GET http://localhost:43000/refresh-info
5. 综述
今天聊了一下 SpringCloud 的 Bus 组件,希望可以对大家的工作有所帮助。
欢迎帮忙点赞、评论、转发、加关注 :)
关注追风人聊Java,每天更新Java干货。
6. 个人公众号
追风人聊Java,欢迎大家关注
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhiaejke
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22