Spring Cloud Stream(消息驱动)

本文介绍了Spring Cloud Stream作为消息驱动框架的作用和工作原理。通过标准流程图展示了其如何与消息中间件交互,强调了它能实现不同环境和中间件间的无缝切换,简化微服务开发。接着讨论了消息重复消费问题,解释了分组如何影响消息的重复消费,并通过实例说明了如何利用分组解决此问题。最后探讨了Stream的持久化特性,展示如何利用group配置实现消息的持久存储和消费。
摘要由CSDN通过智能技术生成

Spring Cloud Stream(消息驱动)

官网结构图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B4RSkLHu-1629185440989)(C:\Users\rlb\AppData\Roaming\Typora\typora-user-images\image-20210812224707690.png)]

组成 说明
Middleware 中间件,目前只支持RabbitMQ 和Kafka
Binder Binder是应用与消息中间件的封装,目前只支持RabbitMQ 和Kafka,通过Binder可以很方便的链接消息中间件,可以动态的该表消息类型(Kafka 的Topic 或者RabbitMQ 的ExChange)这些都可以通过配置来实现
@Input 注解标识输入,通过该注解可以将消息发布到应用程序
@Output 注解标识输出,通过该注解可以将发布到应用程序的消息离开
@StreamListener 监听队列,用于消费者的队列的消息接收
@EnableBinding 指通道channel和exChange 进行绑定

是什么?

官方定义:Spring Cloud Stream 是一个构建消息驱动的框架(类似于java 的jdbc)

Spring Cloud Stream 通过inputs ,outputs 和Binder进行交互 ,通过我们配置来binding ,而Spring Cloud Stream 的binder 负责与消息中间件进行交互,所以我们只需要搞清楚怎么和Spring Cloud Stream 进行交互即可

可以干什么?

在环境不同消息中间件不同的情况下可以做到无感知动态切换,因为Spring Cloud Stream 的Binder对消息中间件做了封装,使得微服务开发的高度解耦,我们可以更加关注业务的开发,减少程序员学习的难度。

Spring Cloud Stream 标准流程图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4aGtvQc7-1629185440992)(image-20210816161720275.png)]

模拟上图流程完成代码的实现

服务端:

//pom.xml
<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-stream-rabbit</artifactId>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值