Spring Cloud(十五)Spring Cloud Stream
·
一、Spring Cloud Stream简介
最初我们使用SpringBoot应用要直接与消息中间件进行信息交互的时候,由于各消息中间件构建的初衷不同,它们的实现细节上会有较大的差异性。而SpringCloud-Stream的出现屏蔽底层消息中间件的差异,降低切换MQ版本,统一消息的编程模型的组件,实现了应用程序与消息中间件细节之间的隔离。
Spring Cloud Stream是一个用于构建 与 共享消息系统 连接的高度可扩展的事件驱动微服务框架。假设一个开发团队,原来使用的是ActiveMQ;后来发现稳定性和并发能力都更好的RabbitMQ;想要替换的话,那么使用Spring Cloud Stream就只需要修改配置即可,不用修改代码;降低了更换消息中间件的成本。Spring Cloud Stream屏蔽了消息中间件的差异,降低更换中间件的成本,统一消息的编程模型。
二、Spring Cloud Stream架构和概念
2.1 Spring Cloud Stream 架构

- Source:输出消息。
- Sink:输入消息。
- Channel:通道,是队列 Queue 的一种抽象,在消息通讯系统中就是实现存储和转发的媒介,通过Channel 对队列进行配置;
- Binder:绑定器;用于连接消息中间件,屏蔽 MQ 之间的差异。
2.2 Spring Cloud Stream 相关概念
一个Spring Cloud Stream应用程序由一个中间件中立的核心组成。该应用程序通过Spring Cloud Stream注入到其中的输入和输出通道与外界进行通信。应用程序通过 inputs 或者 outputs 来与 SpringCloud Stream 中的 binder(绑定器) 对象交互。通过我们配置来 binding(绑定),而SpringCloud Stream 的 binder 对象负责与消息中间件交互。
- Binder 绑定器:用于绑定应用服务器与消息中间件;配置文件中可以指定消息队列的连接信息等;可以改变类型(RabbitMQ,kafka)。
- input输入:应用服务器从绑定器绑定的通道中接收消息,配置文件中指定交换机、队列;可以使用@Input注解标识。
- output输出:应用服务器通过绑定器绑定的通道发送消息,要与input中指定的交换机、队列一致;可以使用@OutPut注解标识。
- @StreamListener 监听器SINK,用于接收消费队列中的消息。
- @EnableBinding 将通道channel与Exchange绑定在一起。
更多推荐




所有评论(0)