Spring Cloud Stream 消息通信方式及编程模型

SpringCloudStream提供了一层抽象,屏蔽了不同MQ如RabbitMQ和Kafka的细节差异,使得应用可以轻松切换MQ而无需改动代码。它采用发布-订阅模式,通过Binder对象与底层MQ交互,简化了消息通信。文章通过示例展示了如何配置和使用Stream进行生产者和消费者的交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

Spring Cloud Stream消息驱动组件是 Spring Cloud 中组件之一,通常用来帮助我们更快速的,更方便,更友好,优雅的方式去构建消息驱动微服务。

为什么不直接使用消息队列如ActiveMQ RabbitMQ RocketMQ Kafka等。

而是使用Spring Cloud Stream,它有什么优点,解决了什么样的问题?

Stream解决问题

首先对MQ中间件来说,有很多产品,其中包括ActiveMQ RabbitMQ RocketMQ Kafka等,MQ消息中间件⼴泛应⽤在应⽤解耦合、异步消息处理、流量削峰等场景中。

不同的MQ消息中间件内部机制包括使⽤⽅式都会有所不同,⽐如RabbitMQ中有Exchange(交换机/交换器).
kafka有Topic、Partition分区这些概念,MQ消息中间件之间的差异性不利于我们上层的开发应⽤。如果我们有需要从一个MQ切换到另一个MQ,那对应我们的程序代码也需要进行修改,此时MQ和程序耦合起来了。

此时,Stream就解决了这个问题,底层可以任意切换MQ,目前Stream仅支持RocketMQ 和 Kafka两款MQ产品。

Spring Cloud Stream进⾏了很好的上层抽象、屏蔽掉了底层具体MQ消息中间件的细节差异,就像Hibernate屏蔽掉了具体数
据库(Mysql/Oracle⼀样)。

Stream重要概念

Spring Cloud Stream 是⼀个构建消息驱动微服务的框架。应⽤程序通过inputs(相当于消息消费者consumer)或者outputs(相当于消息⽣产者producer)来与Spring Cloud Stream中的binder对象交互,⽽Binder对象是⽤来屏蔽底层MQ细节的,它负责与具体的消息中间件交互。

Application core: 消费者逻辑代码,生产者逻辑代码
MiddleWare : 对应底层中间件MQ
inputs: 可以用多个input 、关联消费者 输入 相对于程序代码来说 从Mq输入到消费者进行消费。
outputs: 可以用多个output、关联生产者 输出 相对于应用程序来说,从程序输出到mq中。
通道(Binddings): 通道用来跟Binder打交道
Binder: 绑定器对象,用来和底层MQ打交道

传统MQ模型与Stream消息驱动模型

Binder绑定器

Binder绑定器是Spring Cloud Stream 中⾮常核⼼的概念,就是通过它来屏蔽底层不同MQ消息中间件的细节差异,当需要更换为其他消息中间件时,我们需要做的就是更换对应的Binder绑定器⽽不需要修改任何应⽤逻辑(Binder绑定器的实现是框架内置的,Spring Cloud Stream⽬前⽀持Rabbit、Kafka两种消息队列)

Stream消息通信⽅式

Stream中的消息通信⽅式遵循了发布—订阅模式。

在Spring Cloud Stream中的消息通信⽅式遵循了发布-订阅模式,当⼀条消息被投递到消息中间件之 后,它会通过共享的 Topic 主题进⾏⼴播,消息消费者在订阅的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值