当前位置: 首页 > 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.dtcms.com/a/263038.html

相关文章:

  • HarmonyOS NEXT仓颉开发语言实战案例:外卖App
  • NAT 类型及 P2P 穿透
  • 人工智能和云计算对金融未来的影响
  • Docker 入门教程(九):容器网络与通信机制
  • Qt 前端开发
  • (3)pytest的setup/teardown
  • 文心大模型 4.5 系列开源首发:技术深度解析与应用指南
  • Python 数据分析与可视化 Day 12 - 建模前准备与数据集拆分
  • 【C语言 | 字符串处理】sscanf 用法(星号*、集合%[]等)详细介绍、使用例子源码
  • 嵌入式SoC多线程架构迁移多进程架构开发技巧
  • C++ std::list详解:深入理解双向链表容器
  • uniapp小程序蓝牙打印通用版(集成二维码打印)
  • 深度学习04 卷积神经网络CNN
  • 【Python】 Function
  • 计算整数二进制中1的个数
  • 障碍感知 | 基于3D激光雷达的三维膨胀栅格地图构建(附ROS C++仿真)
  • day47 注意力热图可视化
  • 展示折线图的后端数据连接
  • leetcode427.建立四叉树
  • 利润才是机器视觉企业的的“稳定器”,机器视觉企业的利润 = (规模经济 + 技术差异化 × 场景价值) - 竞争强度
  • ViT与CLIP:图像×文本 多模态读心术揭秘
  • 大数据系统架构实践(三):Hbase集群部署
  • 嘉讯科技:医疗信息化、数字化、智能化三者之间的关系和区别
  • EPLAN 中定制 自己的- A3 图框的详细指南(一)
  • 【机器学习深度学习】适合微调的模型选型指南
  • DAOS集群部署-Docker模式
  • CloudBase AI Toolkit 让我用“嘴”开发出的第一款网页游戏
  • 网络安全运维与攻防演练综合实训室解决方案
  • 服务器被入侵的常见迹象有哪些?
  • CentOS服务器SSH远程连接全指南