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

使用
准备工作
项目基于Spring Cloud 第七章的项目改造。
改造config-client 添加相应坐标
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
在启动类中添加@RefreshScope注解
@RefreshScope注解只需要写在需要刷新配置文件的地方,不一定非要在启动类中
@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
@RestController
@RefreshScope
public 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=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.cloud.bus.enabled=true
spring.cloud.bus.trace.enabled=true
management.endpoints.web.exposure.include=bus-refresh
management.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端口会发送一个消息,由消息总线向其他服务传递,从而使整个微服务集群都达到更新配置文件。
相关推荐:
SEO关键词推广软件官网-助力企业实现高效精准的网络营销,圈圈ai
SEO差价如何用SEO优化帮助企业实现成本与效益的完美平衡,盐城seo收费贵吗
为什么seo这么麻烦,seo是什么意思 为什么要做seo ,dota1ai地图命令选ai
为什么“360收录”是你网站推广的必备利器,seo亚马逊
智能AI写文章:高效创作新风尚
seo类文章是什么,seo技术文章 ,ai3.5-ai聊天
优化文字,让表达更精准:提升写作效率的关键,个人网站建设外包
用AI修改文章,提升写作效率与质量的新时代
SEO非常:如何利用SEO提升网站排名与流量,助力品牌快速成长,绥化短视频营销推广
未来的效率利器AI软件下载AI,助您轻松驾驭智能世界
ChatGPT5.0为什么一直没出来?背后的技术与战略,元宵节ai趣赏月
seo站内优化包括什么营销,seo站内优化操作流程 ,ai 玻璃图标
SEO要求:如何优化网站提升搜索引擎排名,助力企业获取更多流量,鹤山区网站运营推广
SEO很多,如何在竞争激烈的市场中脱颖而出?,在SEO优化中
seo追词是什么,seo词条 ,52580609AI
SEO趋势:2025年搜索引擎优化的未来发展,河南省营销推广系统官网
优化分析:提升企业效益的关键策略,山东大网站建设
智能AI写作生成:如何借助人工智能提升创作效率与质量
seo需要学会什么编程,seo要会些什么 ,剪映怎样加ai
OpenAI注册问题解决方案:如何顺利通过手机号验证,反对ai头像
ChatGPT您的应用遇到问题,无法正常启动?如何解决并重新体验智能助手的魅力!,男头ai关键词
ChatGPT页面无法下拉?禁用浏览器扩展,轻松解决!,imba 1.6 ai
ChatGPT登录界面都不显示了?可能是这些原因导致的!,上海小学ai智能课
AI撰写率:让创作变得更高效,助力内容产业腾飞,人力ai
文章AI生成软件高效创作新纪元
怎么使用AI生成文章,轻松提升写作效率!
SEO客服:如何提升客户体验与业务转化的双赢策略,鄂州网站建设公司教程
seo需要买什么,seo需要考虑什么 ,ai做表头
优化收费,助力企业提升效益,实现共赢,宜州餐饮网站建设
seo需要什么人员,seo需要什么技能 ,画大学ai
什么是seo方法,何为seo ,ai写作神器源码是什么
SEO行销:开启网站流量增长的秘密武器,百威产品关键词查询排名
AI网页生成:轻松构建智能网站,提升品牌竞争力,杭州专业ai智能教育
ChatGPT网络故障报告从协调世界时(UTC)晚上1107左右开始激增,15分钟内引发广泛关注,ai无视进化
ChatGPT页面空白无法登录?如何解决这一困扰?,温州ai字幕生成
在线AI文章:为您打造全新内容创作体验
ChatGPT-深度学习与自然语言处理的革命性突破,金华ai视觉锁螺丝机
seo重点工作是什么,seo重点工作是什么意思 ,棋谱检查ai
OpenAIGPTChatSoraOpenAIChatGPT服务在中断数小时后已恢复,ai视图线稿
一秒采集:提升效率、创造价值的秘密武器,苏州网站整站优化
AI缩短短文-提升创作效率,写作新体验,光速写作业ai写作app
ChatGPT免登录:轻松畅聊,无需注册,快速体验AI智能助手,眼泪ai
AI.生成重新定义创造力的新纪元
ChatGPT4网页空白:重新定义智能交互的未来,怎么登ai
seo读什么书,seo是哪个专业的 ,亚洲9ai吧
ChatGPT无法完全显示?你可能忽略了这些令人惊讶的细节!,朵朵ai绘画
SEO导流:如何通过精准优化实现网站流量大爆发,网站优化优化怎么做
SEO实现:如何通过SEO优化提升网站流量与排名,南京市公司网站推广
WPJam:打破网站管理的壁垒,打造极致用户体验,广东谷歌seo工具
SEO策划:让你的网站迅速脱颖而出的秘诀,seo优化和技巧