当前位置: 首页 > news >正文

Spring Cloud Bus 和 Spring Cloud Stream

Spring Cloud Bus 和 Spring Cloud Stream 都是 Spring Cloud 生态中的消息通信组件,但它们的定位和使用场景有显著区别:


1. Spring Cloud Bus

核心定位:分布式系统的消息广播(配置刷新、事件传播)。
典型场景

  • 通过消息中间件(如 RabbitMQ、Kafka)广播配置变更事件,实现所有微服务配置的集中刷新(如结合 /actuator/refresh/actuator/bus-refresh 端点)。
  • 跨服务的事件通知(例如:注销全局缓存、批量触发操作)。

关键特性

  • 基于 轻量级事件驱动(如 RefreshRemoteApplicationEvent)。
  • 依赖 Spring Cloud Config 实现配置的动态更新。
  • 通常与 @RefreshScope 配合使用。

示例

# 通过Bus广播配置刷新指令
POST http://config-server/actuator/bus-refresh

2. Spring Cloud Stream

核心定位:简化消息中间件的集成,提供统一的消息生产与消费模型。
典型场景

  • 构建事件驱动的微服务,如订单创建触发库存扣减。
  • 需要与 Kafka、RabbitMQ 等中间件交互的业务逻辑。

关键特性

  • 抽象 Binder 层,屏蔽底层中间件差异(如 Kafka/RabbitMQ)。
  • 提供 @StreamListener(旧版)或函数式编程模型(新版)处理消息。
  • 支持消息分区、消费组、重试等高级特性。

示例

// 生产者
@Bean
public Supplier<String> produce() {return () -> "Hello Stream";
}// 消费者
@Bean
public Consumer<String> consume() {return message -> System.out.println("Received: " + message);
}

主要区别

维度Spring Cloud BusSpring Cloud Stream
用途系统级事件广播(如配置刷新)业务级消息通信(如订单事件)
抽象层级基于 Spring 事件机制 + 消息中间件广播统一的消息中间件编程模型
使用复杂度简单,主要依赖自动配置和端点触发较高,需定义消息通道和绑定逻辑
依赖关系通常与 Spring Cloud Config 配合使用独立使用,直接处理业务消息流
典型中间件RabbitMQ、Kafka(仅用于传输事件)Kafka、RabbitMQ、RocketMQ 等

协作场景

两者可结合使用,例如:

  1. Config Server 通过 Bus 广播配置变更。
  2. 微服务接收到配置更新事件后,通过 Stream 发送业务通知到其他系统。

总结:Bus 是系统管理的“广播电台”,Stream 是业务消息的“收发器”。

http://www.lqws.cn/news/582139.html

相关文章:

  • C语言main函数的原理:程序入口的奥秘
  • SpringCloud微服务 Eureka服务注册与发现
  • 从DeepMimic到带物理约束的MaskMimic——人形机器人全身运控的通用控制器:自此打通人类-动画-人形的训练路径
  • week1
  • WPF学习笔记(14)列表视图控件ListView与数据模板
  • demo01:基于 SpringMVC 的用户管理系统
  • Linux习题
  • 设计模式-观察者模式(发布订阅模式)
  • Redis 安装使用教程
  • RWKV-8 系列之 DeepEmbedAttention:精简 KV 缓存,尤其适合混合模型(RWKV-7s)
  • 使用pyflink进行kafka实时数据消费
  • 在 Vue3 + Element Plus 中实现 el-table 拖拽排序功能
  • mysql 小版本升级实战分享
  • 基于librdkafka开发的C++客户端,生产者生产发送数据失败问题处理
  • 百度文心大模型4.5系列正式开源,开源会给百度带来什么?
  • 网络安全2023—新安全新发展
  • MySQL (四):连接查询和索引
  • macos 安装 xcode
  • 【软考中级·软件评测师】下午题·面向对象测试之架构考点全析:分层、分布式、微内核与事件驱动
  • 基于C#的OPCServer应用开发,引用WtOPCSvr.dll
  • python | numpy小记(五):理解 NumPy 中的 `np.arccos`:反余弦函数
  • 卡片跳转到应用页面(router事件)
  • 一文详解Modbus协议原理、技术细节及软件辅助调试
  • 华为云Flexus+DeepSeek征文|​​华为云ModelArts Studio大模型 + WPS:AI智能PPT生成解决方案​
  • 基于时间策略+应用过滤的游戏防沉迷方案:技术实现与工具推荐
  • 本地服务器部署后外网怎么访问不了?内网地址映射互联网上无法连接问题的排查
  • 【Pandas】pandas DataFrame Flags
  • AR 学习:开启未来学习新视界​
  • Stable Diffusion 项目实战落地:从0到1 掌握ControlNet 第四篇 风格化字体大揭秘:从线稿到涂鸦,ControlNet让文字焕发新生
  • SQuirreL SQL:一个免费的通用数据库开发工具