SpringCloud--Stream概述、Binder概述

一时失言乱红尘 2021-08-27 13:09 851阅读 0赞

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

发表评论

表情:
评论列表 (有 0 条评论,851人围观)

还没有评论,来说两句吧...

相关阅读

    相关 概述

    概述 一、计算机网络在信息时代的作用 1、21世纪重要的三大特征 2、三大网络及其作用 3、Internet的译名

    相关 UML概述

        UML视频一直在看,但是总觉得没有什么思路,知识都是零散的、片面的。最后复习阶段老师重新理了一下思路,我才觉得有点清晰了。所以,又回头把UML概述部分总结了一下。  

    相关 UML—概述

            UML视频从总体上来说,条理清楚,知识点也没有那么散,而且在视频中还简单点的介绍了一下设计模式,额。。。你这是在吊我的胃口吗??不过我还是很喜欢的,总体上很赞!

    相关 UML概述

            视频看了4集,为免以后什么都想不起来,赶紧先把这段时间学的东西总结一下。前4集讲UML概述,宏观论述了UML的概念和发展历史,重点是UML的构成。

    相关 BGP概述

    BGP是为了在AS之间更高效率的传递路由和维护大量的路由而产生的一个外部网关协议。 BGP定义 BGP(Border Gateway Protocol)是一种用于自治系

    相关 Kubernates——概述

    Kubernates是什么 Kubernetes是Google开源的容器集群管理系统。它构建在Docker技术之上,为容器化的应用提供资源调度、部署运行、服务发现、扩容缩