图说SpringCloudStream消息驱动

SpringCloud Stream消息驱动实现原理

通过定义Binder绑定器作为中间层,实现了应用程序和消息中间件之间实现细节的隔离。通过向应用程序暴露统一的Channel通道,可以让应用程序不再需要考虑各种不同的消息中间件实现的兼容性问题。当需要升级消息中间件,或者是更换其他消息中间件产品时,我们需要做的就只是更换对应的Binder绑定器即可,不需要再修改任何应用中对接消息中间件的实现逻辑。

Stream消息驱动中有以下几个核心概念:

Source: 当需要发送消息时,就需要使用Source来实现,Source会把所要发送的消息(POJO对象)进行序列化(默认转换成JSON格式字符串),然后将这些数据发送到Channel中。

Channel: 消息通道是Stream消息驱动的抽象之一。通常我们向消息中间件发送消息或者消费消息时需要指定主题(Topic)名称或消息队列名称,但这样一来,当我们需要变更主题名称的时候就需要修改大量消息发起方和消息消费方的代码,但是通过使用Channel消息通道,消息发起方和消息消费方的业务代码只需要连接到Channel消息通道就可以了,具体这个Channel消息通道对应的是哪个主题,就可以在配置文件中指定,这样当主题变更的时候我们不需要对代码做任何修改,就实现了业务代码和具体消息中间件的解耦。

Binder: Stream消息驱动中的另外一个抽象层,通过不同的Binder可以实现和不同的消息中间件整合,比如针对Kafka的Binder等等,通过Binder提供统一的消息收发接口,我们可以根据实际需要部署不同的消息中间件,或者根据实际生产环境中部署的消息中间件来调整我们的配置。

Sink: 当需要监听消息时,就需要使用Sink来实现,Sink负责从Channel消息通道中获取消息,并将消息反序列化成消息对象(POJO对象),然后交给具体的消息消费方处理相应的业务逻辑。

SpringCloudStream原理图

相关推荐
运维瓦工13 小时前
DevOps 生态介绍(十):Docker Compose 核心 YAML 配置详解与常用命令大全
spring cloud·docker·容器
星辰徐哥15 小时前
云原生核心特性:容器化、微服务与DevOps的通俗解读
微服务·云原生·devops
heimeiyingwang16 小时前
【架构实战】分布式会话:从Session到JWT的演进
微服务·云原生·架构
worilb16 小时前
Spring Cloud 学习与实践(8):Spring Cloud Gateway 统一入口、路由转发与双重跨域故障演练
学习·spring·spring cloud
小二·18 小时前
微服务架构设计与实践
微服务·架构·wpf
小当家.10518 小时前
AIGrader:一个 AI 作业批改平台的 Java EE 课设实战
java·人工智能·java-ee
Devin~Y18 小时前
大厂 Java 面试实战:从 Spring Boot 微服务到 AI RAG 音视频平台全链路解析
java·spring boot·redis·spring cloud·微服务·rag·spring ai
我登哥MVP19 小时前
SpringCloud 核心组件解析:服务注册与发现
java·spring boot·后端·spring·spring cloud·java-ee·maven
HLAIA光子19 小时前
分布式锁与事务:你的微服务可能根本不需要它们
分布式·后端·微服务
heimeiyingwang20 小时前
【架构实战】注册中心选型:Nacos vs Eureka vs Consul
微服务·云原生·架构