SpringCloud--Stream概述、Binder概述

Spring Cloud Stream

Spring Cloud Stream是一个构建消息驱动微服务框架。

应用程序通过inputs或者outputs来与SpringCloudStream中binder对象交互。通过配置来binding(绑定),而Spring Cloud Stream的binder对象负责与消息中间件交互。所以只需要搞清楚如何与Spring Cloud Stream交互就可以方便使用消息驱动的方式。

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

目前仅支持RabbitMQ、Kafka。

设计理念

标准MQ:
在这里插入图片描述

  • 生产者/消费者之间靠消息媒介传递信息内容(Message)
  • 消息必须走特定通道(MessageChannel)
  • 消息通道里的消息如何被消费,谁负责收发处理(消息通道MessageChannel的子接口SubscribableChannel,由MessageHandler消息处理器所订阅)

引入Cloud Stream:
比如说我们用到了RabbitMQ和Kafka,由于这两个消息中间件的架构上的不同,像RabbitMQ有exchange,kafka有Topic和Partitions分区
在这里插入图片描述
这些中间件的差异性导致实际项目开发造成了一定的困扰,如果使用两个消息队列的其中一种,后面的业务需求,我们想往另一种消息队列进行迁移,这时候无疑就是一个灾难性的,一大堆东西都要重新推到重新做,因为它和我们的系统耦合了,这时候springcloud stram提供了一种解耦合的方式。

统一底层差异:

在没有绑定器这个概念的情况下,SpringBoot应用要直接与消息中间件进行信息交互的时候,由于各消息中间件构建的初衷不同,他们的实现细节上会有较大的差异性。通过定义绑定器作为中间层,完美地实现了应用程序与消息中间件细节之间的隔离。通过向应用程序暴露统一的Channel通道,使得应用程序不需要再考虑各种不同的消息中间件实现。

Binder

Stream对消息中间件的进一步封装,可以做到代码层面对中间件的无感知,甚至于动态的切换中间件,使得微服务开发的高度解耦,服务可以关注更多自己的业务流程。
在这里插入图片描述

  • input对应于消费者
  • output对应于生产者
  • stream中的消息通信方式遵循了发布-订阅模式(Topic主题进行广播)
    • RabbitMQ:Exchange
    • Kakfa:Topic
发布了842 篇原创文章 · 获赞 2256 · 访问量 29万+

猜你喜欢

转载自blog.csdn.net/cold___play/article/details/104985725
今日推荐