一、能干嘛?

二、什么是总线?

三、动态刷新全局广播

注意:必须先具备良好的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 消息总线相关推荐

  1. Spring Cloud(十一)高可用的分布式配置中心 Spring Cloud Bus 消息总线集成(RabbitMQ)

    上一篇文章,留了一个悬念,Config Client 实现配置的实时更新,我们可以使用 /refresh 接口触发,如果所有客户端的配置的更改,都需要手动触发客户端 /refresh ,当服务越来越多 ...

  2. SpringCloud微服务架构,Config 分布式配置中心,Bus 消息总线, Stream 消息驱动,Sleuth+Zipkin 链路追踪

    Config分布式配置中心 Config 概述 概述 • Spring Cloud Config 解决了在分布式场景下多环境配置文件的管理和维护. • 好处: • 集中管理配置文件 • 不同环境不同配 ...

  3. Bus消息总线如何实现

    我们如果要去更新所有微服务的配置,在不重启的情况下去更新配置,只能依靠spring cloud config了,但是,是我们要一个服务一个服务的发送post请求, 我们能受的了吗?这比之前的没配置中心 ...

  4. SpringCloud学习笔记(十) Bus 消息总线

    目录 一.SpringCloud Bus 介绍 1.消息总线的由来 2.是什么 3.能干嘛 4.总线 1)什么是总线 2)基本原理 二.RabbitMQ环境配置 三.动态刷新全局广播 1.搭建客户端微 ...

  5. 微服务-消息总线 SpringCloud Bus

    1. why 上篇中的配置中心服务端可以实现从远程仓库拉取实时变更的配置, 但是客户端无法直接实现配置更新, 需要向客户端发送一个post请求刷新配置(/actuator/refresh), 客户端微 ...

  6. SpringCloud(十一)Bus消息总线、Stream消息驱动

    一.Bus消息总线 需求:分布式自动刷新配置功能: 解决:SpringCloud Bus配合Spring cloud Config使用可以实现配置的动态刷新. 1.概述 定义:Spring Cloud ...

  7. Message Bus - 消息总线

    Message Bus - 消息总线 Liferay的*消息总线(Message Bus)*是一种服务级API,组件可以用它来发送和接收消息.它提供了消息生产者(producers)和消费者(cons ...

  8. Spring Cloud Bus 消息总线

    在微服务架构的系统中,我们通常会使用轻量级的消息代理来构建一个共用的消息主题让系统中所有微服务实例都连接上来,由于该主题中产生的消息会被所有实例监听和消费, 所以称它为消息总线. 在总线上的各个实例都 ...

  9. Spring Cloud Bus消息总线

    目录 一.概述简介 1.1. Bus是什么 1.2. Bus能干嘛 1.3. 为何被称为总线 二.RabbitMQ环境配置 2.1. windows下载与安装 2.2. 使用RabbitMQ 三.Bu ...

最新文章

  1. Eclipse SVN冲突详细解决方案
  2. frdora10_a8_linux,在Fedora 10中安装IRAF
  3. 【控制】滑动模式观测器 sliding mode observer
  4. NTU 课程: MAS714(3) DFS BFS(搜索算法)
  5. 音视频开发基础概述 - PCM、YUV、H264、常用软件介绍
  6. springboot+vue用websocket消息推送和监听端口
  7. aes js 加盐值 解密_Java已有AES加解密,现需要前端Javascript加密调接口,返回的数据需要解密,目前互..._慕课猿问...
  8. 小米miuiVS华为鸿蒙,华为鸿蒙2.0 vs 小米MIUI 12.5
  9. VC++多线程工作笔记0005---线程间通信
  10. 【报告分享】中国在线教育师生教学行为和教学条件研究报告.pdf(附下载链接)
  11. std::list 源代码解析
  12. 8.621 - Secret Research
  13. weblogic宕机crash问题解决分享
  14. MRPT笔记——MRPT在VS2013中的配置
  15. 【自制】3D全息投影
  16. 修改idea64.exe.vmoptions导致双击打不开idea的解决办法
  17. MySQL使用大全和JDBC使用_五万字的详细笔记
  18. 韩信点兵 中国剩余定理
  19. 教你如何解决win10电脑局域网看不到其他共享电脑
  20. 用python整个活(3)——生日悖论:birthday paradox

热门文章

  1. 美洽客服端下载地址是什么?
  2. iOS逆向之反HOOK的基本防护
  3. MicroERP简介及下载
  4. angularjs修改html标签,angularjs sanitize+ng-bind-html内置指令做html标签转义
  5. 计算机英语多层,大学专业英语:计算机英语2
  6. Smart Link详解及其配置
  7. 11 边缘保留滤波(EPF)
  8. 拓嘉启远电商:拼多多长尾词位于哪里会比较好
  9. 图像处理中几个基本的处理方法c#代码实现
  10. 如何下载b站视频 - 视频下载神器you-get的运用