1.消息总线Bus简介

(1)消息总线Bus的作用<1>在没有使用消息总线的时候,如果需要修改某个配置1.1.如果涉及修改的微服务节点比较多,需要手动的逐个节点的刷新非常麻烦1.2.在微服务架构的系统中,通常会使用轻量级的消息代理来构建一个共用的消息主题1.3.让系统中所有微服务实例都连接上来
(2)于该主题中产生的消息会被所有实例监听和消费,所以称它为消息总线<1>在总线上的各个实例都可以方便地广播一些需要让其他连接在该主题上的实例都知道的消息1.1.例如:配置信息的变更或者其他一些管理操作等<2>它同配置中心一样,几乎是微服务架构中的必备组件<3>配合SpringCloud Config实现微服务应用配置信息的动态更新等

2.准备工作

(1)目前版本,Spring Cloud Bus仅支持两款中间件产品,RabbitMQ和Kafka
(2)已RabbitMQ为例<1>需要在配置文件中配置 spring-cloud-starter-bus-amqp1.1.需要装rabbitMq
(3)已Kafka为例<1>如果使用了默认配置,就可以从RabbitMQ无缝切换过来   <2>只需要修改一下之前ConfigServer和ConfigClient的依赖<3>将spring-cloud-starter-bus-amqp改为spring-cloud-starter-bus-kafka

3.改造ConfigClient

(1)在配置文件pom.xml添加依赖,示例代码如下:<1>在pom文件加上起步依赖spring-cloud-starter-bus-amqp,配置文件如下:<!-- 已RabbitMQ为例 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bus-amqp</artifactId></dependency><2>在pom文件加上起步依赖pring-cloud-starter-bus-kafka,配置文件如下:<!-- 已Kafka为例 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>pring-cloud-starter-bus-kafka</artifactId></dependency>
(2)在配置文件application.properties中加配置,示例如下:<1>已RabbitMQ为例:加RabbitMQ的配置,包括地址、端口,用户名、密码  spring.rabbitmq.host=localhostspring.rabbitmq.port=5672#默认用户名密码都是guestspring.rabbitmq.username=guestspring.rabbitmq.password=guestspring.cloud.bus.enabled=truespring.cloud.bus.trace.enabled=truemanagement.endpoints.web.exposure.include=bus-refresh<2>已Kafka为例:加Kafka的配置信息#Kafka的服务端列表,指定kafka代理地址可以多个,默认localhostspring.cloud.stream.kafka.binder.brokers=localhost#Kafka服务端的默认端口,当brokers属性中没有配置端口信息时,就会使用这个默认端口,默认9092spring.cloud.stream.kafka.binder.defaultBrokerPort=9092#Kafka服务端连接的ZooKeeper节点列表,默认localhostspring.cloud.stream.kafka.binder.zkNodes=localhost#ZooKeeper节点的默认端口,当zkNodes属性中没有配置端口信息时,就会使用这个默认端口,默认2181spring.cloud.stream.kafka.binder.defaultZkPort=2181   <3>Kafka配置注意事项:3.1.如果在启动Kafka时均采用了默认配置3.2.那么不需要再做任何其他配置就能在本地实现从RabbitMQ到Kafka的切换3.3.把搭建的ZooKeeper、Kafka启动起来3.3.1.虽然最新版本的Kafka已经集成了Zookeeper3.3.2.但是作为分布式开发,一般需要Kafka和Zookeeper独立部署3.3.3.因此建议实际开发中单独下载一个Zookeeper,自己测试可以用集成的3.3.4.不管集成的或单独下载的Zookeeper使用Kafka前都必须先启动Zookeeper
(3)修改ConfigClientApplication启动类:<1>已RabbitMQ为例,代码示例如下:@SpringBootApplication@EnableEurekaClient@EnableDiscoveryClient@RestController//当有变更时,配置文件自动刷新不用重启服务@RefreshScopepublic class ConfigClientApplication {public static void main(String[] args) {SpringApplication.run(ConfigClientApplication.class, args);}@Value("${foo}")String foo;@RequestMapping(value = "/hi")public String hi(){return foo;}}1.1.依次启动EurekaServer、Confg-Server,ConfigClient,端口为:80061.2.访问http://localhost:8007/hi,浏览器显示:foo version 31.3.这时去代码仓库将foo的值改为“foo version 4”,即改变配置文件foo的值1.3.1.如果是传统的做法,需要重启服务,才能达到配置文件的更新1.3.2.此时,只需要发送post请求:http://localhost:8006/actuator/bus/refresh1.3.3.会发现ConfigClient会重新读取配置文件,无需重启服务
(4)架构分析<1>当git文件更改的时候,通过pc端用post 1.1.向端口为8007的ConfigClient发送请求/bus/refresh1.2.此时8007端口会发送一个消息,由消息总线向其他服务传递1.3.从而使整个微服务集群都达到更新配置文件

4.相关知识总结

(1)消息总线Bus,需要结合消息中间件<1>目前默认支持的消息中间件有RabbitMQ,Kafka<2>需要现在对应的消息中间件,并在pom.xml中添加相应依赖
(2)参考文档:<1>源码:https://github.com/forezp/SpringCloudLearning/tree/master/sc-f-chapter8<2>https://www.fangzhipeng.com/springcloud/2018/08/08/sc-f8-bus.html<3>https://www.jianshu.com/p/730d86030a41

java技术--SpringCloud:消息总线Bus简介及代码实现(18)相关推荐

  1. SpringCloud消息总线——Bus

    Bus 本专栏学习内容来自尚硅谷周阳老师的视频 有兴趣的小伙伴可以点击视频地址观看 在SpringCloud Config学习过程中,还遗留下来一个问题:当运维更新git上的配置信息时,要想更改所有的 ...

  2. 499、Java分布式和集群12 -【SpringCloud视图微服务 - 消息总线Bus】 2021.06.01

    目录 0.RabbitMQ 1.先运行,看到效果,再学习 2.pom.xml 3.bootstrap.yml 4.application.yml 5.ProductDataServiceApplica ...

  3. SpringCloud教程-消息总线Bus 客户端(client)刷新(SpringCloud版本Greenwich.SR4)

    文章目录 消息总线(Bus)介绍 项目示例 config-client-bus 代码地址:github-spring-cloud地址 前言:前面文章讲了Spring Cloud Config配置中心如 ...

  4. SpringCloud config 配置中心集群配置以及整合消息总线BUS实现关联微服务配置自动刷新

    一.SpringCloud Config 基本配置中的问题 在上一章节<SpringCloud config 配置中心介绍与基本配置使用>中我们现实了配置中心的配置集中管理.调用微服务应用 ...

  5. SpringCloud教程-消息总线Bus 服务端(server)刷新(SpringCloud版本Greenwich.SR4)

    文章目录 项目示例 config-server-bug 代码地址:github-spring-cloud地址 前言:本篇文章在上一篇文章基础上进行修改,因为虽然我们做到了利用一个消息总线触发刷新,而刷 ...

  6. iframe的src动态修改并刷新_微服务中配置中心Config+消息总线Bus,实现分布式自动刷新配置

    技术/杨33 一.分布式配置中心Config 一套集中的.动态的配置管理,实现统一配置微服务中的每个子服务. Spring Cloud Config为微服务架构提供了集中化的外部配置支持,配置服务器为 ...

  7. Java技术:收集16 条 yyds 的代码规范,值得一读!

    今天给大家分享关于Java技术中16 条 yyds 的代码规范,读完肯定会有帮助! 一.MyBatis 不要为了多个查询条件而写 1 = 1 当遇到多个查询条件,使用where 1=1 可以很方便的解 ...

  8. (三)springcloud 消息总线-spring cloud bus

    RabbitMQ 1.RabbitMQ环境:略 2.每个服务都添加依赖,或者聚合工程中统一添加 <dependency><groupId>org.springframework ...

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

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

最新文章

  1. 红帽技术开放日:参与开源社区不只有贡献代码这一种方式
  2. 大神们都在用的终端工具,多合一全能终端神器MobaXterm
  3. 误删除了_msdcs.domain.com
  4. Redis(window版本)
  5. tyvj 1067 合唱队形 dp LIS
  6. django实现图片上传和显示
  7. 诺奖奖金为何119年还没发完?
  8. shell 日志统计常用脚本
  9. Frameworks.Entity.Core 1
  10. 完工任务不允许更改需求
  11. python中temp是什么意思_.temp(temp是什么意思?)
  12. 百度搜索引擎都有哪些算法
  13. ubuntu服务器系统安装教程,Ubuntu--服务器版本系统安装图解教程
  14. Win8 RP微软原版光盘镜像下载大全(含中文版)
  15. cearte-react-app中craco中优雅引入svg【自定义宽、高、颜色,仅需5步】
  16. Jenkins构建项目时构建成功但不部署到tomcat的webapps下(Build step ‘Deploy war/ear to a container‘ marked build as fai)
  17. csgo 放置机器人_csgo怎么在确定位置放置一个bot?
  18. threejs 实现小飞机建模
  19. 计算机的音乐设置方法,让电脑开机和关机音乐更个性的设置方法(图文)
  20. mysql columns表_MySQL--INFORMATION_SCHEMA COLUMNS表

热门文章

  1. 基于Optsim Circuit和OptoDesigner设计QPSK收发器光子集成芯片
  2. div适应屏幕垂直居中的多种解决方案
  3. java中间常用的类_Java实现的中间库 | 学步园
  4. BGP双线机房优点116.211.147.x
  5. pgsql(PostgreSQL)常用命令行操作
  6. python实战编程小案例-----更新中
  7. CRM系统下载| 客户关系管理系统下载
  8. 免费的云端软件测试平台-快意测试云V1R1.B21更新发布
  9. matlab apm,tvapm 水声通信面临的最困难的问题是多途干扰,其中自 引起接收信号的幅度衰落,互 matlab 238万源代码下载- www.pudn.com...
  10. SQL临时表|游标|两个日期之间计算时差|临时表条件查询