java消息总线ibus_SpringCloud Bus 消息总线
一、能干嘛?
二、什么是总线?
三、动态刷新全局广播
注意:必须先具备良好的RabbitMQ环境
演示广播效果,增加复杂度,再以3355为模板再制作一个3366
1、新建cloud-config-client-3366
1)POM
cloud2020
com.atguigu.springcloud
1.0-SNAPSHOT
4.0.0
cloud-config-client-3366
8
8
org.springframework.cloud
spring-cloud-starter-config
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
com.atguigu.springcloud
cloud-api-commons
${project.version}
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-actuator
org.springframework.boot
spring-boot-devtools
runtime
true
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test
pom文件
2)YML
server:
port: 3366
spring:
application:
name: config-client
cloud:
config:
label: master
name: config
profile: dev
uri: http://localhost:3344
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
management:
endpoints:
web:
exposure:
include: "*"
3)主启动
@EnableEurekaClient
@SpringBootApplicationpublic classConfigClientMain3366 {public static voidmain(String[] args) {
SpringApplication.run( ConfigClientMain3366.class,args);
}
}
4)controller
@RestController
@RefreshScopepublic classConfigClientController {
@Value("${server.port}")privateString serverPort;
@Value("${config.info}")privateString configInfo;
@GetMapping("/configInfo")publicString getConfigInfo(){return "serverPort:"+serverPort+"\t\n\n configInfo: "+configInfo;
}
}
2、设计思想
1) 利用消息总线触发一个客户端/bus/refresh,进而刷新所有客户端的配置
2) 利用消息总线触发一个服务端ConfigServer的/bus/refresh端点,进而刷新所有客户端的配置(更加推荐)
图二的架构显然更加合适,图一不适合的原因如下
打破了微服务的职责单一性,因为微服务本身是业务模块,它本不应该承担配置刷新职责
破坏了微服务各节点的对等性
有一定的局限性。例如,微服务在迁移时,它的网络地址常常会发生变化,此时如果想要做到自动刷新,那就会增加更多的修改
3、代码改造
1)给cloud-config-center-3344配置中心服务端添加消息总线支持
POM
org.springframework.cloud
spring-cloud-starter-bus-amqp
增加mq依赖
YML
server:
port:3344spring:
application:
name: cloud-config-center
cloud:
config:
server:
git:
uri: https://github.com/jwen1994/sprincloud-config.git
search-paths:- springcloud-config
username:526464869@qq.com
password: wj_870096
label: master
rabbitmq:
host:192.168.216.130
port: 5672username: admin
password: password
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
management:
endpoints:
web:
exposure:
include: "bus-refresh"
2)给cloud-config-center-3355客户端添加消息总线支持
POM
org.springframework.cloud
spring-cloud-starter-bus-amqp
增加mq依赖
YML
server:
port:3355spring:
application:
name: config-client
cloud:
config:
label: master
name: config
profile: dev
uri: http://localhost:3344
rabbitmq:
host: 192.168.216.130
port: 5672username: admin
password: password
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
management:
endpoints:
web:
exposure:
include:"*"
3)给cloud-config-center-3366客户端添加消息总线支持
POM
org.springframework.cloud
spring-cloud-starter-bus-amqp
增加mq依赖
YML
server:
port:3366spring:
application:
name: config-client
cloud:
config:
label: master
name: config
profile: dev
uri: http://localhost:3344
rabbitmq:
host:192.168.216.130port:5672username: admin
password: password
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
management:
endpoints:
web:
exposure:
include:"*"
4、测试
修改Github上配置文件增加版本号
curl -X POST "http://localhost:3344/actuator/bus-refresh"
一次发送,处处生效
四、动态刷新定点通知
不想全部通知,只想定点通知
只通知3355
不通知3366
公式:http://配置中心IP地址/actuator/bus-refresh/{destination}
/bus/refresh请求不再发送到具体的服务实例上,而是发给config server并通过destination参数类指定需要更新配置的服务或实例
我们这里以刷新运行在3355端口上的config-client为例
curl -X POST "http://localhost:3344/actuator/bus-refresh/config-client:3355"
五、总结
java消息总线ibus_SpringCloud Bus 消息总线相关推荐
- Spring Cloud(十一)高可用的分布式配置中心 Spring Cloud Bus 消息总线集成(RabbitMQ)
上一篇文章,留了一个悬念,Config Client 实现配置的实时更新,我们可以使用 /refresh 接口触发,如果所有客户端的配置的更改,都需要手动触发客户端 /refresh ,当服务越来越多 ...
- SpringCloud微服务架构,Config 分布式配置中心,Bus 消息总线, Stream 消息驱动,Sleuth+Zipkin 链路追踪
Config分布式配置中心 Config 概述 概述 • Spring Cloud Config 解决了在分布式场景下多环境配置文件的管理和维护. • 好处: • 集中管理配置文件 • 不同环境不同配 ...
- Bus消息总线如何实现
我们如果要去更新所有微服务的配置,在不重启的情况下去更新配置,只能依靠spring cloud config了,但是,是我们要一个服务一个服务的发送post请求, 我们能受的了吗?这比之前的没配置中心 ...
- SpringCloud学习笔记(十) Bus 消息总线
目录 一.SpringCloud Bus 介绍 1.消息总线的由来 2.是什么 3.能干嘛 4.总线 1)什么是总线 2)基本原理 二.RabbitMQ环境配置 三.动态刷新全局广播 1.搭建客户端微 ...
- 微服务-消息总线 SpringCloud Bus
1. why 上篇中的配置中心服务端可以实现从远程仓库拉取实时变更的配置, 但是客户端无法直接实现配置更新, 需要向客户端发送一个post请求刷新配置(/actuator/refresh), 客户端微 ...
- SpringCloud(十一)Bus消息总线、Stream消息驱动
一.Bus消息总线 需求:分布式自动刷新配置功能: 解决:SpringCloud Bus配合Spring cloud Config使用可以实现配置的动态刷新. 1.概述 定义:Spring Cloud ...
- Message Bus - 消息总线
Message Bus - 消息总线 Liferay的*消息总线(Message Bus)*是一种服务级API,组件可以用它来发送和接收消息.它提供了消息生产者(producers)和消费者(cons ...
- Spring Cloud Bus 消息总线
在微服务架构的系统中,我们通常会使用轻量级的消息代理来构建一个共用的消息主题让系统中所有微服务实例都连接上来,由于该主题中产生的消息会被所有实例监听和消费, 所以称它为消息总线. 在总线上的各个实例都 ...
- Spring Cloud Bus消息总线
目录 一.概述简介 1.1. Bus是什么 1.2. Bus能干嘛 1.3. 为何被称为总线 二.RabbitMQ环境配置 2.1. windows下载与安装 2.2. 使用RabbitMQ 三.Bu ...
最新文章
- Eclipse SVN冲突详细解决方案
- frdora10_a8_linux,在Fedora 10中安装IRAF
- 【控制】滑动模式观测器 sliding mode observer
- NTU 课程: MAS714(3) DFS BFS(搜索算法)
- 音视频开发基础概述 - PCM、YUV、H264、常用软件介绍
- springboot+vue用websocket消息推送和监听端口
- aes js 加盐值 解密_Java已有AES加解密,现需要前端Javascript加密调接口,返回的数据需要解密,目前互..._慕课猿问...
- 小米miuiVS华为鸿蒙,华为鸿蒙2.0 vs 小米MIUI 12.5
- VC++多线程工作笔记0005---线程间通信
- 【报告分享】中国在线教育师生教学行为和教学条件研究报告.pdf(附下载链接)
- std::list 源代码解析
- 8.621 - Secret Research
- weblogic宕机crash问题解决分享
- MRPT笔记——MRPT在VS2013中的配置
- 【自制】3D全息投影
- 修改idea64.exe.vmoptions导致双击打不开idea的解决办法
- MySQL使用大全和JDBC使用_五万字的详细笔记
- 韩信点兵 中国剩余定理
- 教你如何解决win10电脑局域网看不到其他共享电脑
- 用python整个活(3)——生日悖论:birthday paradox