springcloud-bus+config实现动态刷新全局广播配置
bus支持rabbitmq和kafka,因此需要其中一个mq服务器启动起来。看个人了。下面实现一次post请求,然后全局广播给其他微服务实例
1. 给 注册中心config 和 服务实例 添加 springcloud-bus-rabbitmq的依赖,如下:
<!-- 添加消息总线RabbitMQ支持 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency>
2. 给configServer(注册中心)添加下面的yml配置:
server: port: 3344 spring: rabbitmq: host: 192.168.113.6 #rabbitmq所在的IP port: 5672 #rabbit暴露的服务端口 username: guest password: guest management: endpoints: web: exposure: include: "bus-refresh" #暴露bus-refresh这个端点(得这个端点,其他不行),到时候手动给这个端点发送post请求
3. 然后是 服务实例 添加下面的yml配置:
spring: rabbitmq: host: 192.168.113.6 #rabbitmq所在的IP port: 5672 #rabbit暴露的服务端口 username: guest password: guest management: endpoints: web: exposure: include: "*"
我讲一下,为什么服务实例也得暴露端点?之前我们是给服务实例发送post请求才加上这段配置用于暴露端点的,现在虽然我们不给服务实例发post了,但是 消息总线 会发!
4. 给所有服务实例 需要刷新的业务类 加上 @RefreshScope
下面使用curl发送post请求给configServer:curl -X POST http://localhost:3355/actuator/bus-refresh;再次强调,/bus-refresh前面是固定的
发送过去就会刷新 全部服务实例 的配置了。到这里大家很奇怪,流程都懂,就是 configServer发什么东西给bus,bus是如何知道给哪些服务实例发通知呢?原理如下图:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~