1、Spring Cloud Stream 概述
官方表述是:Spring Cloud Stream is a framework for building highly scalable event-driven microservices connected with shared messaging systems.意思就是Spring Cloud Stream是一个框架,用于构建与共享消息传递系统相连的高度可伸缩的事件驱动微服务。以下是官方提供的一个应用模型,很明显的看出,应用程序和中间件之间是通过binder以及一系列的input/output进行数据的交互。(特别说明:Spring Cloud Stream (后续简称SCS)目前按照特性写法区分可以分为两大类一个是3.1.x之前的版本,一个是之后的版本,可以说是区别比较大的,本文讲述的是3.2.4的版本)该框架的引入,可以让开发者不再纠结于变更mq框架而需要频繁的改变业务代码以及相关配置,只需要改动相关框架的配置文件,就可以实现不同消息中间件之间自由切换,甚至组合使用。
2、关键
2.1、Binder
目前的话呢,Spring Cloud Stream为Kafka和Rabbit MQ提供了Binder实现。当然目前Spring Cloud Alibaba 内部呢也实现了RocketMq的Binder。本文将会讲述RabbitMQ的使用。
Spring Cloud Stream 提供了一种抽象的Binder用来物理连接外部的中间件。生产者可以是任意向通道发送信息的组件,通道可以使用Binder被绑定到外部的消息中间件。消费者也可以通过任意组件从通道中获取消息。同理,消费者的通道也可以被绑定到外部消息中间件。
2.2、Bindings
Binding是连接应用程序跟消息中间件的桥梁,用于配置生产者和消费者。基本上一系列的配置都是在这里。
如果有需要可以前往官网看具体内容(中文版,该版本属于老版本内容)
接下来,上代码,一个实战demo
3、代码实现
3.1、POM依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.9</version>
<relativePath/>
</parent>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-rabbit</artifactId>
</dependency>
<dependency>
<groupId>