Stream 一

    在说Bus的时候就稍微的说到了Stream,Stream可以说是Bus的基础。

        Spring Cloud Stream 是一个用来为微服务应用构建消息驱动能力的框架。 它可以基于Spring Boot 来创建独立的、 可用于生产的 Spring 应用程序。 它通过使用 Spring Integration来连接消息代理中间件以实现消息事件驱动。 Spring Cloud Stream 为一些供应商的消息中间件产品提供了个性化的自动化配置实现,并且引入了发布斗丁阅、 消费组以及分区这三个核心概念。 简单地说, Spring Cloud Stream 本质上就是整合了 Spring Boot 和 SpringIntegration, 实现了一套轻量级的消息驱动的微服务框架。 通过使用 Spring Cloud Stream,可以有效简化开发人员对消息中间件的使用复杂度, 让系统开发人员可以有更多的精力关注于核心业务逻辑的处理。 由于 Spring Cloud Stream 基于 Spring Boot 实现,所以它秉承了Spring Boot 的优点,自动化配置的功能可帮助我们快速上手使用。现在只支持RabbitMQ和kafka。

       下图是官方文档中Spring Cloud Stream应用模型的结构图。从中我们可以看到,Spring Cloud Stream构建的应用程序与消息中间件之间是通过绑定器 Binder相关联的, 绑定器对于应用程序而言起到了隔离作用, 它使得不同消息中间件的实现细节对应用程序来说是透明的。 所以对于每一个Spring Cloud Stream的应用程序来说, 它不需要知晓消息中间件的通信细节, 它只需知道Binder 对应程序提供的抽象概念(Channl)来使用消息中间件来实现业务逻辑即可 。如下图所示, 在应用程序和Binder之间定义 了两条输入通道和三条输出通道来传递消息, 而绑定器则是作为这些通道和消息中间件之间的桥梁进行通信。

    

绑定器

    Binder绑定器是Spring Cloud Stream中一个非常重要的概念。 在没有绑定器这个概念的情况下, SpringBoot应用要直接与消息中间件进行信息交互的时候, 由千各消息中间件构建的初衷不同, 所以它们在实现细节上会有较大的差异, 这使得我们实现的消息交互逻辑就会非常笨重, 因为对具体的中间件实现细节有太重的依赖, 当中间件有较大的变动升级或是更换中间件的时候, 我们就需要付出非常大的代价来实施。通过定义绑定器作为中间层, 完美地实现了应用程序与消息中间件细节之间的隔离。 通过向应用程序暴露统一的Channel通道, 使得应用程序不需要再考虑各种不同的消息中间件的实现。 当需要升级消息中间件, 或是更换其他消息中间件产品时, 我们要做的就是更换它们对应的配nder绑定器而 不需要修改任何SpringBoot的应用逻辑。这一点在实现消息总线时, 从RabbitMQ切换到Kafka的过程中, 已经能够让我们体验到这一好处。目前版本的Spring Cloud Stream为主流的消息中间件产品RabbitMQ和Kafka提供了默认的Binder 实现, 在快速入门的例子中, 我们就使用了RabbitMQ 的Binder。 另外,Spring Cloud Stream还实现了一个专门用于测试的TestSupportBinder, 开发者可以直接使用它来对通道的接收内容进行可靠的测试断言。 如果要使用除了RabbitMQ 和 Kafka以外的消息中间件的话, 我们也可以通过使用它所提供的扩展API来实现其他中间件的Binder。

    stream只有发布订阅模式。

    到这里就介绍结束了。

努力吧,皮卡丘。

猜你喜欢

转载自blog.csdn.net/yidan7063/article/details/79310376