千家信息网

Spring Cloud Bus消息的示例分析

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章将为大家详细讲解有关Spring Cloud Bus消息的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。概念我们使用配置中心时,当配置中心的配置发生
千家信息网最后更新 2026年11月01日Spring Cloud Bus消息的示例分析

这篇文章将为大家详细讲解有关Spring Cloud Bus消息的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

概念

我们使用配置中心时,当配置中心的配置发生了变化,我们就要发送一个post请求给客户端,让它重新去拉取新的的配置。当客户端有很多时,并且还是使用同一份配置文件,这样当配置中心的配置发生改变,我们就得逐个发送post请求通知,这样无疑是很浪费人力物力的。
Bus消息总线组件就帮我们解决了这个问题。他的工作流程是这样的,当配置中心的配置发生了变化时,我们给其中一个客户端发送post请求,然后client将请求的信息发送到rabbitmq队列中,然后消息队列将消息发送给别的队列。

使用

准备工作

项目基于Spring Cloud 第七章的项目改造。

改造config-client 添加相应坐标

                                        org.springframework.cloud                        spring-cloud-starter-config                                                        org.springframework.boot                        spring-boot-starter-web                                                        org.springframework.cloud                        spring-cloud-starter-netflix-eureka-client                                                        org.springframework.cloud                        spring-cloud-starter-bus-amqp                                                        org.springframework.boot                        spring-boot-starter-actuator                

在启动类中添加@RefreshScope注解
@RefreshScope注解只需要写在需要刷新配置文件的地方,不一定非要在启动类中

@SpringBootApplication@EnableEurekaClient@EnableDiscoveryClient@RestController@RefreshScopepublic class ConfigClientApplication {        /**         * http://localhost:8881/actuator/bus-refresh         */        public static void main(String[] args) {                SpringApplication.run(ConfigClientApplication.class, args);        }        @Value("${foo}")        String foo;        @RequestMapping(value = "/hi")        public String hi(){                return foo;        }}

配置相关配置

spring.rabbitmq.host=localhostspring.rabbitmq.port=5672spring.rabbitmq.username=guestspring.rabbitmq.password=guestspring.cloud.bus.enabled=truespring.cloud.bus.trace.enabled=truemanagement.endpoints.web.exposure.include=bus-refreshmanagement.security.enabled=false  //报错加上
  • 依次启动eureka-server、confg-cserver,启动两个config-client,端口为:8881、8882。

  • 访问http://localhost:8881/hi 或者http://localhost:8882/hi 浏览器显示:

foo version 3

  • 这时我们去代码仓库将foo的值改为"foo version 4",即改变配置文件foo的值。如果是传统的做法,需要重启服务,才能达到配置文件的更新。此时,我们只需要发送post请求:http://localhost:8881/actuator/bus-refresh,你会发现config-client会重新读取配置文件

  • 1.5版本的post请求http://localhost:8881/bus/refresh

  • 2.0版本的post请求http://localhost:8881/actuator/bus-refresh

  • 这时我们再访问http://localhost:8881/hi 或者http://localhost:8882/hi 浏览器显示:

foo version 4

另外,/actuator/bus-refresh接口可以指定服务,即使用"destination"参数,比如 "/actuator/bus-refresh?destination=customers:**" 即刷新服务名为customers的所有服务。 原理图

当git文件更改的时候,通过pc端用post 向端口为8882的config-client发送请求/bus/refresh/;此时8882端口会发送一个消息,由消息总线向其他服务传递,从而使整个微服务集群都达到更新配置文件。

关于"Spring Cloud Bus消息的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

配置 消息 文件 服务 客户 客户端 端口 篇文章 队列 示例 分析 总线 更多 注解 浏览器 版本 项目 变化 工作 改造 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 哈尔滨大商圈互联网科技有限公司 中关村互联网 科技集团 金融科技与互联网金融 互联网与新科技 致骋互联网科技 广州凡科互联网科技 互联网 科技服务平台 居家互联网科技有限公司 成都铂石互联网科技做什么的 武汉健翔互联网络科技有限公司 千方科技属于互联网企业吗 哈尔滨屹滨互联网科技有限公司 深圳市优智互联网科技有限公司 徐州市互联网科技有限公司 皮皮虾互联网科技有限公司 山东大美朱楼互联网科技有限公司 好易买互联网科技 盐城市攀科互联网科技有限公司 中国主要互联网科技公司 如何强化互联网金融科技 互联网巨头科技公司 网络科技有限互联网 未来的互联网科技 顺网科技2021年互联网排名 如何创新互联网科技 元气玛特互联网科技公司是外包吗 互联网科技接地气 国产互联网科技公司 西安左小互联网科技有限公司 互联网科技品牌
0