Spring Cloud Stream详解

1. 简介

官方定义: Spring Cloud Stream是一个用于构建于共享消息系统连接的高度可扩展的事件驱动微服务。

目前主流的消息框架有:

  • ActiveMQ

  • RabbitMQ

  • RocketMQ

  • Kafka

假设公司公司业务项目用了RabbitMQ,而大数据项目用了Kafka,这时就会出现两个消息框架,消息模型上也存在差异,并且代码上用法也不一样。

Spring Cloud Stream就是不再关注具体MQ细节,可以在不改变代码的基础上,来完成Rabbit和Kafka两个不同的消息中间件的切换(这里切换是指原本用的RabbitMQ,但是需要换乘Kafka,所以换框架)

总结:屏蔽底层消息中间件的差异,降低切换成本,统一消息的编程模型

也就是基于Stream可以和如下消息中间件整合使用

1.2 设计思想

常规的MQ设计如下:

  • Message: 生产者/消费者之间靠消息媒介传递信息内容

  • MessageChannel: 消息必须走特定的通道

  • 队列: 假如发消息会先发送到消息队列中

  • 消息队列的消息消费: 订阅的人可以进行消费

Cloud Stream 设计如下:

通过定义绑定器Binder作为中间层,实现应用程序和消息中间件细节之间的隔离。

在没有绑定起这个概念的情况下,应用要直接于消息中间件进行信息交互的时候,有于各消息中间件构建的初衷不同,它们的实现细节会有较大的差异性,通过定义绑定器作为中间层,完美地实现了应用程序于消息中间件细节之间的隔离。

Stream对消息中间件的进一步封装,可以坐待代码层面对中间件的无感知,甚至于动态的切换中间件(rabbitmq切换为kafka),是的微服务开发的高度结偶,服务可以关注更多自己的业务流程