Spring Cloud Stream 实现统一消息通信平台

发布于:2024-07-27 ⋅ 阅读:(34) ⋅ 点赞:(0)
1. 概述
  • Spring Cloud Stream:是Spring提供的消息通信框架,旨在构建跨不同消息中间件的统一通信平台。
  • 目的:通过消息通信机制降低分布式系统中服务间的耦合度,实现异步服务交互。
2. 消息通信与RPC
  • RPC:远程过程调用,实现简单,但耦合度高。
  • 消息通信:引入以降低服务间耦合,支持异步交互。
3. 消息中间件多样性
  • 存在多种消息通信规范和中间件,例如JMS、AMQP、ActiveMQ、RabbitMQ、Kafka、RocketMQ等,它们具有不同的使用方式。
4. Spring Cloud Stream核心组件
  • Binder:连接业务服务和消息中间件,抽象不同中间件的差异。
  • Channel:消息通道,用于消息传递。
  • Source:消息发布者,生成并发送消息。
  • Sink:消息消费者,接收并处理消息。
5. Spring家族消息通信框架
  • Spring Messaging:提供基础消息通信API。
  • Spring Integration:企业服务总线,扩展Spring Messaging,支持多种集成模式。
  • Spring Cloud Stream:基于Spring Integration,提供消息发布和消费的封装。
6. Spring Messaging基础
  • Message:包含Header和Payload。
  • MessageChannel:发送消息的接口。
  • PollableChannel:可轮询获取消息的通道。
  • SubscribableChannel:通过订阅回调函数响应消息的通道。
7. Spring Cloud Stream架构
  • Source & Sink:分别负责消息的发布和消费。
  • Channel:消息的通道。
  • Binder:与消息中间件的粘合剂,提供统一API。
8. Binder工作原理
  • @EnableBinding:指定Source或Sink接口。
  • BindableProxyFactory:工厂类,实现MethodInterceptor和Bindable接口,用于绑定Input和Output。
  • Binder接口:提供绑定生产者和消费者的方法。
9. 消息发送与消费
  • SendingHandler:处理Source发送的消息。
  • @StreamListener:标注方法以接收消息,通过StreamListenerMessageHandler类实现。
10. Spring Cloud Stream与RabbitMQ集成
  • spring-cloud-stream-binder-rabbit:集成代码工程,提供与RabbitMQ的集成。
  • RabbitMessageChannelBinder:实现消息发送和消费,使用RabbitTemplate和AmqpOutboundEndpoint。
11. 消息格式转换
  • MessageConverter:转换消息数据结构,如从org.springframework.messaging.Messageorg.springframework.amqp.core.Message
12. 总结
  • Spring Cloud Stream通过Binder组件实现了与多种消息中间件的统一集成,提供了Source、Sink、Channel等组件,简化了消息通信的复杂性,为开发者提供了统一的消息发送和接收API。

网站公告

今日签到

点亮在社区的每一天
去签到