SpringCloud Stream快速入门

前言

在微服务的开发过程中,经常会用到消息中间件,通过消息中间件在服务于服务之间传递消息,不管你使用的是哪款消息中间件,比如RabbitMQ,Kafka和RocketMQ,那么消息中间件和服务之间都会有一定的耦合,这个耦合性是指原来使用RabbitMQ,现在由于其他原因要替换成RocketMQ,那么我们的微服务就需要修改代码,变动会比较大,因为市面上各种消息中间件还是存在一定的区别,如果我们使用SpringCloud Stream来整合我们的消息中间件,那么这样就可以降低微服务和消息中间件的耦合性,做到轻松在不同的消息中间件间切换,当然SpringCloud Stream官方只支持RabbitMQ和Kafka,Alibaba新写了一个starter可以支持RocketMQ,(不得不说一点阿里云布局还是挺大的,借助自己的开源技术,宣传自己的平台)!
按照官方定义,SpringCloud Stream是一个构建消息微服务的框架,SpringCloud Stream解决了开发人员无感知的使用消息中间件的问题,因此SpringCloud Stream对中间件的进一步封装,可以做到代码层面对消息中间件的无感知,甚至于动态切换中间件(RocketMQ切换为RocketMQ或者Kafka),使得微服务开发的高度解耦,服务可以关注更多自己的业务流程;

SpringCloud Stream重要概念

在这里插入图片描述
在这里插入图片描述

  • Application Core:我们的项目代码(生产者、消费者)
  • Middleware:各消息中间件(RocketMQ、RabbitMQ、Kafka)
  • Binder:这个就是Stream用来接入各种消息中间件的

我们发送、接收消息是通过一个高度抽象的Binder进行封装,经过Binder绑定各消息中间件

SpringCloudStream内部有几个重要概念

  • Binder:跟外部消息中间件集成的组件,用来创建Binding,各消息中间件都有自己的Binder实现;比如Kafka的实现KafkaMessageChannelBinder,RabbitMQ的实现RabbitMessageChannelBinder,以及RocketMQ的实现RocketMQMessageChannelBinder
  • Binding:包括Input Binding和Output Binding;Binding在消息中间件与应用程序提供的Provider和Consumer之间提供了一个桥梁,实现了开发者只需使用应用程度的Provider和Consumer生产或消费数据即可,屏蔽了开发者与地城消息中间件的接触;
  • Input:应用通过input(相当于消费者consumer)与SpringCloud Stream中Binder交互,而Binder负责与消息中间件交互,因此,我们只需要关注如何与Binder交互即可,而无需关注与具体消息中间件的交互。
  • Output:(相当于producer)与SpringCloud Stream中Binder交互
组成说明
BinderBinder是应用与消息中间件之间的封装,通过Binder可以方便的连接消息中间件,可以动态的改变消息类型(对应于Kafka的topic,RabbitMQ的exchange这些都可以通过配置文件来实现)
@Input该注解标识输入通道,通过该输入通道接收消息进入应用程序
@Output该注解标识输出通道,发布的消息将通过该通道离开应用程序
@StreamListener监听队列,用于消费者队列的消息接收
@EnableBinding将信道channel和exchange、topic绑定在一起
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员劝退师-TAO

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值