SpringCloud入门 --- cloud stream基本介绍

176 阅读2分钟

什么是springcloud stream? springcloud stream是一个构建消息驱动微服务的框架。

应用程序通过inputs或者outputs 来与spring cloud stream 中binder对象交互。 通过我们配置来binding,而spring cloud stream 的binder对象负责与消息中间件交互。 所以,我们只需要搞清楚如何与spring cloud stream交互就可以方便使用消息驱动的方式。

通过使用spring intergration 来连接消息代理中间件已实现消息事件驱动。 spring cloud stream 为一些供应商的消息中间件产品提供了个性化的自动化配置,引用发布-订阅,消费组,分区的三个核心概念。

image.png spring cloud stream目前仅支持Rabbitmq kafuka

为什么使用spring cloud stream? 流行的消息中间件过多,有可能一个工程中存在两种MQ,需要切换 维护 开发 学习成本非常高,cloud stream 可以通过适配绑定的方式,自动的给我们在mq中切换。

spring cloud stream的作用: 在没有绑定器这个概念的情况下,我们的springboot应用要直接与消息中间件进行信息的交互的时候,由于各个消息中间件构建的初衷不同,它们的实现细节差别较大,通过定义绑定器作为中间层,完美地实现了应用程序与消息中间件细节之间的隔离。通过向应用程序暴露统一的channel通道,使得应用程序不需要在考虑各种不同的消息中间件实现。 而spring cloud stream的作用是: 通过定义的绑定器binder 作为中间层,实现了应用程序与消息中间件细节之间的隔离。从而做到屏蔽底层消息中间件的差异,降低开发维护成本,统一消息编程的模型。

spring cloud stream 标准的流程图

image.png 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绑定在一起