SpringCloud入门 消息总线 Bus
消息总线
1、概述
使用SpringCloud Bus配和Spring Cloud Config使用实现配置的动态刷新
Bus只支持消息处理:RabbitMQ和Kafaka。
能干嘛

能管理和传播分布式系统间的消息,就像一个分布式执行器,可用于广播状态更改、时间推送等,也可以当做微服务间的通信通道。
什么是总线
在微服务架构的系统中,通常会使用轻呈级的消息代理来构建一个共用的消息主题,并让系统中所有微服务实例都连接上来。由于该主题中产生的消
息会被所有实例监听和消费,所以称它为消息总线。在总线上的各个实例,都可以方便地广播一些需要让其他连接在该主题上的实例都知道的消息。
基本原理
ConfigClient实例都监听MQ中同一个topic(默认是springCloudBus)。当一个服务刷新数据的时候,它会把这个信息放入到Topic中,这样其它监听
同一Topic的服务就能得到通知,然后去更新白身的配置。
https://www.bilibili.com/video/av55976700?from=search&seid=15010075915728605208
2、Rabbit环境配置

进入目录输入命令

安装成功之后访问:http://localhost:15672/
默认账号密码为guest和guest登陆之后:

3、动态刷新刷新全局广播

新建一个cloud-config-client3366的模块,跟3355内容一致,端口不一致。
设计思想
1、利用消息总线触发一个客户端bus/refresh,而刷新所有客户端的配置。

2、利用消息总线触发一个服务端ConfigServer的/bus/refresh断电,而刷新所有客户端的配置

对比
第二种的架构显然更加适合,第一种不适合的原因有:
a:打破了微服务的职责单一性,因为微服务本身是业务模块,他本不应该承担配置刷新的职责。
b:婆婆坏了微服务各个节点的对等性。
c:有一定的局限性,例如:微服务在迁移时,它的网络常常会发生变化,此时如果想要做到自动刷新,那就回增加更多的配置。
3344配置中心服务端模块添加消息总线支持
1、pom
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
2、yml
## rabbitmq的相关配置
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
## rabbitmq相关配置,暴露bus刷新配置的端点
management:
endpoints:
web:
exposure:
include: "bus-refresh"
3355和3355客户端模块添加消息总线支持
1、pom
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
2、yml
## rabbitmq的相关配置
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
测试修改git中配置,然后访问curl -X POST "http://localhost:3344/actuator/refresh",调用3355接口,查看结果是否更新。。
结果:一次发送,处处生效
4、动态刷新定点通知
不想全部通知,只想定点通知,只通知一个3355,而不通知3366
简单一句话
制定具体的某一个实例生效而不是全部!
公式:http://localhost:3344/actuator/bus-refresh/{destination}
同样是发送到服务实例上,然后通过{destination}制定具体需要更新的客户端。规则:spring-application-name:端口
实例,只刷新3355客户端

通知总结:

公众号:发哥讲
这是一个稍偏基础和偏技术的公众号,甚至其中包括一些可能阅读量很低的包含代码的技术文,不知道你是不是喜欢,期待你的关注。
代码分享
微信公众号 点击关于我,加入QQ群,即可获取到代码以及高级进阶视频和电子书!!
img
如果你觉得文章还不错,就请点击右上角选择发送给朋友或者转发到朋友圈~
● 扫码关注我们
据说看到好文章不推荐的人,服务器容易宕机!
本文版权归 发哥讲 和 博客园 共有,原创文章,未经允许不得转载,否则保留追究法律责任的权利。
SpringCloud入门 消息总线 Bus的更多相关文章
- 学习一下 SpringCloud (五)-- 配置中心 Config、消息总线 Bus、链路追踪 Sleuth、配置中心 Nacos
(1) 相关博文地址: 学习一下 SpringCloud (一)-- 从单体架构到微服务架构.代码拆分(maven 聚合): https://www.cnblogs.com/l-y-h/p/14105 ...
- Spring Cloud第十二篇 | 消息总线Bus
本文是Spring Cloud专栏的第十二篇文章,了解前十一篇文章内容有助于更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 Spring ...
- SpringCloud学习系列之五-----配置中心(Config)和消息总线(Bus)完美使用版
前言 在上篇中介绍了SpringCloud Config的使用,本篇则介绍基于SpringCloud(基于SpringBoot2.x,.SpringCloud Finchley版)中的分布式配置中心( ...
- Spring-cloud微服务实战【十】:消息总线Bus
回忆一下,在上一篇文章中,我们使用了分布式配置中心config来管理所有微服务的配置文件,那这样有没有什么问题?有,那就是无法配置文件无法自动更新,当我的git服务器上的配置文件更新后,不能同步更 ...
- SpringCloud基于消息总线的配置中心
@https://www.cnblogs.com/ityouknow/p/6931958.html Spring Cloud Bus Spring cloud bus通过轻量消息代理连接各个分布的节点 ...
- springCloud学习-消息总线(Spring Cloud Bus)
1.简介 Spring Cloud Bus 将分布式的节点用轻量的消息代理连接起来.它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控.本文要讲述的是用Spring Cloud Bus实现 ...
- SpringCloud之Config配置中心+BUS消息总线原理及其配置
一.配置中心作用 在常规的开发中,每个微服务都包含代码和配置.其配置包含服务配置.各类开关和业务配置.如果系统结构中的微服务节点较少,那么常规的代码+配置的开发方式足以解决问题.当系统逐步迭代,其微服 ...
- SpringCloud入门(十): Config 统一配置中心
SpringCloud Config 简介 在分布式系统中,由于服务组件过多,为了方便争对不通的环境下的服务配置文件统一管理,实时更新,所以出现了分布式配置中心组件.市面上开源的配置中心有很多,360 ...
- SpringCloud系列——Bus 消息总线
前言 SpringCloud Bus使用轻量级消息代理将分布式系统的节点连接起来.然后可以使用此代理广播状态更改(例如配置更改)或其他管理指令.本文结合RabbitMQ+GitHub的Webhook实 ...
随机推荐
- 《笨办法学Python 3》python入门书籍推荐|附下载方式
<笨办法学Python 3>python入门书籍免费下载 内容简介 本书是一本Python入门书,适合对计算机了解不多,没有学过编程,但对编程感兴趣的读者学习使用.这本书以习题的方式引导读 ...
- XCTF-WEB-新手练习区(9-12)笔记
9:xff_referer X老师告诉小宁其实xff和referer是可以伪造的. 界面显示需要我们 添加X-Forwarded-For:123.123.123.123 添加Rerferer:http ...
- 导航菜单(动画)--- jQuery
本文章实现是一个导航菜单的功能 (1)点击当前菜单显示二级菜单,再次点击收起当前菜单. (2)当有一个二级菜单显示,点击其他菜单,上一个已点击菜单会收起.只展示当前点击的菜单,只显示一个菜单,类似手风 ...
- java 模拟斗地主发牌洗牌
一 模拟斗地主洗牌发牌 1.案例需求 按照斗地主的规则,完成洗牌发牌的动作. 具体规则: 1. 组装54张扑克牌 2. 将54张牌顺序打乱 3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张 ...
- C#LeetCode刷题之#237-删除链表中的节点(Delete Node in a Linked List)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3832 访问. 请编写一个函数,使其可以删除某个链表中给定的(非末 ...
- Flutter 容器(3) - AnimatedPadding
AnimatedPadding : 会产生动画效果的padding,在给定时间内缩放到指定padding import 'package:flutter/material.dart'; class A ...
- 使用MIPS完成汇编程序——选择排序实现
题目: 从键盘输入10个无符号字数并从大到小进行排序,排序结果在屏幕上显示出来.要求能输入数字 和输出数字 且由大到小来排列 1.代码以及伪代码: 首先写出对应c++代码然后把c++代码翻译成汇编语言 ...
- 基于小程序云Serverless开发微信小程序
本文主要以使用小程序云Serverless服务开发一个记事本微信小程序为例介绍如何使用小程序云Serverless开发微信小程序.记事本小程序的开发涉及到云函数调用.云数据库存储.图片存储等功能,较好 ...
- 双系统Linux和win10系统时间不一样。
https://jingyan.baidu.com/article/456c463b4e6a5a0a5831443a.html
- GitHub标星120K+的JDK并发编程指南,连续霸榜GitHub终于开源了
前言 在编程行业中,有一个东西是和广大程序员形影不离的,在最一开始接触编程就是配置它的运行环境,然后java / javac,对,这个东西就是jdk 昨天项目刚上线,可以稍微休息一下了,但是猛的闲下来 ...
