在正式讲解SCA RocketMQ之前,很有必要讲一下SpringCloudStream,它是SC体系中的一个框架,用于构建和共享消息传递系统连接的高度可伸缩的时间驱动微服,它的目的就一个,也是它为什么出现的原因:简化消息业务在SpringCloud应用程序中的开发量
?
看图能知道,应用程序通过SpringCloudStream(下文称:SCS)注入的输入通道input和output输出通道与消息中间件Middleware进行通信,消息通道通过特定的中间件绑定器Binder实现了链接到外部代理,这里可以参考我上一篇文章,有源码是这么实现的,附上文章链接:
RocketMQ系列之消息发送/消费初体验_阿小冰的博客-CSDN博客RocketMQ系列之消息发送/消费初体验https://blog.csdn.net/qq_38377525/article/details/123253718SCS的实现其实就是基于发布/订阅机制,这个机制在很多地方都有用到,其核心是由四个部分组成的:Spring Messaging和Spring Integration、SCS自己的Binders和Bindings
①Spring Messaging:这个是Spring Framework中的统一消息编程模型,其核心类如下:
- Message:消息对象,包含消息头Header和消息体Payload
- MessageChannel:消息通道接口,用于接收消息,提供send()将消息发送至消息通道
- MessageHandler:消息处理器接口,用于处理消息逻辑
②Spring Integration:这个是Spring Framework中用于支持企业集成的一种拓展机制,其作用就是提供一个简单的模型来构建企业集成解决方案的,当然它对SpringMessaging也进行了拓展
- MessageDispatcher:消息分发接口,作用是分发消息和添加删除消息的处理器
- MessageRouter:消息路由接口,定义默认的输出消息通道
- Filter:消息的过滤注解,用于配置过滤消息的表达式
- Aggregator:消息的聚合注解,用于将多条消息聚合成一条
- Splitter:消息的分割,用于将一条消息拆分成多条
③Binders:目标绑定器,负责与外部消息中间件系统集成的组件
- doBindProducer:绑定消息中间件客户端发送消息模块
- doBindConsumer:绑定消息中间件客户端接收消息模块?
④Bindings:外部消息中间件与程序提供的消息生产者和消费者(是Binder创建)之间的桥梁
说到这里,就要补充一点了,SCS提供了Kafka和Rabbit的Binder,用于集成Kafka和RabbitMQ。然后SCA(SpringCloudAlibaba)自行添加了RocketMQ的Binder,和SCS做集成