SpringCloud入门(二十四) ------ cloud stream基本介绍
什么是springcloud stream?
springcloud stream是一个构建消息驱动微服务的框架。
应用程序通过inputs或者outputs 来与spring cloud stream 中binder对象交互。
通过我们配置来binding,而spring cloud stream 的binder对象负责与消息中间件交互。
所以,我们只需要搞清楚如何与spring cloud stream交互就可以方便使用消息驱动的方式。
通过使用spring intergration 来连接消息代理中间件已实现消息事件驱动。
spring cloud stream 为一些供应商的消息中间件产品提供了个性化的自动化配置,引用发布-订阅,消费组,分区的三个核心概念。
spring cloud stream目前仅支持Rabbitmq kafuka
为什么使用spring cloud stream?
流行的消息中间件过多,有可能一个工程中存在两种MQ,需要切换 维护 开发 学习成本非常高,cloud stream 可以通过适配绑定的方式,自动的给我们在mq中切换。
spring cloud stream的作用:
在没有绑定器这个概念的情况下,我们的springboot应用要直接与消息中间件进行信息的交互的时候,由于各个消息中间件构建的初衷不同,它们的实现细节差别较大,通过定义绑定器作为中间层,完美地实现了应用程序与消息中间件细节之间的隔离。通过向应用程序暴露统一的channel通道,使得应用程序不需要在考虑各种不同的消息中间件实现。
而spring cloud stream的作用是:
通过定义的绑定器binder 作为中间层,实现了应用程序与消息中间件细节之间的隔离。从而做到屏蔽底层消息中间件的差异,降低开发维护成本,统一消息编程的模型。
spring cloud stream 标准的流程图
Binder: 很方便的连接中间件,屏蔽差异
Channel: 传递消息的通道.
Source 和 Sink: 简单的可理解为参照对象是 Sping cloud stream 自身,从 Stream 发布消息就是输出,接受消息就是输入。
spring cloud stream 的常用注解与Api:
组成 | 说明 |
---|---|
Middleware | 中间件,目前只支持Rabbitmq和kafka |
Binder | Binder是应用与消息中间件之间的封装,目前实行了kafka和Rabbitmq的Binder,通过Binder可以很方便的连接中间件,可以动态的改变消息类型(对应kafka的topic与ribbitmq的exchange),这些都可以通过配置来实现 |
@Input | 注解标识输入通道,通过该输入通道接收到消息进入应用程序 |
@Output | 注解标识输出通道,发布的消息将通过该通道离开应用程序 |
@StreamLintener | 监听队列,用于消费者的队列的消息接收 |
@EnableBinding | 指channel与exchange绑定在一起 |