当前位置: 首页>前端>正文

spring-cloud-stream 入门篇

Spring Cloud Stream介绍

Spring Cloud Stream是一个用于构建消息驱动的微服务应用程序的框架。Spring Cloud Stream以Spring Boot为基础,创建独立的生产级Spring应用程序,并使用Spring Integration提供与消息代理的连接。它提供了来自多个供应商的中间件的的配置,引入了发布-订阅语义、使用者组和分区的概念。

知识点

  • Spring Messaging
  • Spring Integration
  • Spring Cloud Stream

基础内容

Spring Messaging

Spring Messaging 是 Spring Framework 中的一个模块,其作用就是统一消息的编程模型。

spring-cloud-stream 入门篇,第1张
Figure 1. Message
spring-cloud-stream 入门篇,第2张
Figure 2. Message Channel
  • Message,消息对象,包含Header和Payload;Payload可以是任意类型,Header定义了通用信息(例如:id、时间和返回地址等);
  • Message Channel,Pipes and Filters模型中的Pipe;其中定义了用来发送消息到此Pipe的send方法;其根据MessageHandler中两种获取消息的方式定义了两个子接口:PollableChannel用来表示支持拉模型的通道,其中定义了receive方法用来支持MessageHandler主动拉取消息;SubscribableChannel用来表示支持推模型(发布/订阅模型)的通道,其中定义了subscribe和unsubscribe方法用来支持MessageHandler的订阅和取消订阅;Spring Messaging 定义了DestinationResolver接口用来选择消息的目的地,消息的目的地可以是Pipe(MessageChannel),也可以是Filter(MessageHandler);
  • AbstractMessageProducingHandler:可以指定一个outputChannel,处理完消息之后的结果发送到此Channel中;
  • AbstractReplyProducingMessageHandler:不用指定outputChannel,inputChannel就是outputChannel;
  • AbstractReplyProducingPostProcessingMessageHandler:处理完消息之后,在发送结果到outputChannel;

Spring Integration

Spring Integration 提供了 Spring 编程模型的扩展用来支持企业集成模式(Enterprise Integration Patterns),是对 Spring Messaging 的扩展。
它提出了不少新的概念,包括消息路由MessageRoute、消息分发MessageDispatcher、消息过滤Filter、消息转换Transformer、消息聚合Aggregator、消息分割Splitter等等。同时还提供了MessageChannel和MessageHandler的实现,分别包括 DirectChannel、ExecutorChannel、PublishSubscribeChannel和MessageFilter、ServiceActivatingHandler、MethodInvokingSplitter 等内容。

Spring Cloud Stream

SCS 在 Spring Integration 的基础上进行了封装,提出了Binder, Binding, @EnableBinding, @StreamListener等概念。
SCS 与 Spring Boot Actuator 整合,提供了/bindings, /channelsendpoint。
SCS 与 Spring Boot Externalized Configuration 整合,提供了BindingProperties, BinderProperties等外部化配置类。
SCS 增强了消息发送失败的和消费失败情况下的处理逻辑等功能。
SCS 是 Spring Integration 的加强,同时与 Spring Boot 体系进行了融合,也是 Spring Cloud Bus 的基础。它屏蔽了底层消息中间件的实现细节,希望以统一的一套 API 来进行消息的发送/消费,底层消息中间件的实现细节由各消息中间件的 Binder 完成。
Binder是提供与外部消息中间件集成的组件,为构造Binding提供了 2 个方法,分别是bindConsumer和bindProducer,它们分别用于构造生产者和消费者。目前官方的实现有 Rabbit Binder 和 Kafka Binder, Spring Cloud Alibaba 内部已经实现了 RocketMQ Binder。

spring-cloud-stream 入门篇,第3张
Figure 1. Spring Cloud Stream Application
spring-cloud-stream 入门篇,第4张
  • Binders
  • Bindings,绑定在外部消息传递系统(例如,队列、主题等)与应用程序提供的生产者和消费者之间提供了桥梁。
  • Producers
  • Consumers

参考

  • spring-integration
  • Spring Cloud Stream 体系及原理介绍 (baidu.com)
  • Spring Messaging_陈振阳的博客-CSDN博客_spring-messaging

https://www.xamrdz.com/web/2hu1997054.html

相关文章: