IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> RocketMQ系列之框架解析 -> 正文阅读

[Java知识库]RocketMQ系列之框架解析

在正式讲解SCA RocketMQ之前,很有必要讲一下SpringCloudStream,它是SC体系中的一个框架,用于构建和共享消息传递系统连接的高度可伸缩的时间驱动微服,它的目的就一个,也是它为什么出现的原因:简化消息业务在SpringCloud应用程序中的开发量


Spring Cloud Stream

架构图剖析

?

看图能知道,应用程序通过SpringCloudStream(下文称:SCS)注入的输入通道input和output输出通道与消息中间件Middleware进行通信,消息通道通过特定的中间件绑定器Binder实现了链接到外部代理,这里可以参考我上一篇文章,有源码是这么实现的,附上文章链接:

RocketMQ系列之消息发送/消费初体验_阿小冰的博客-CSDN博客RocketMQ系列之消息发送/消费初体验https://blog.csdn.net/qq_38377525/article/details/123253718SCS的实现其实就是基于发布/订阅机制,这个机制在很多地方都有用到,其核心是由四个部分组成的:Spring Messaging和Spring Integration、SCS自己的Binders和Bindings

①Spring Messaging:这个是Spring Framework中的统一消息编程模型,其核心类如下:

  • Message:消息对象,包含消息头Header和消息体Payload
  • MessageChannel:消息通道接口,用于接收消息,提供send()将消息发送至消息通道
  • MessageHandler:消息处理器接口,用于处理消息逻辑

②Spring Integration:这个是Spring Framework中用于支持企业集成的一种拓展机制,其作用就是提供一个简单的模型来构建企业集成解决方案的,当然它对SpringMessaging也进行了拓展

  • MessageDispatcher:消息分发接口,作用是分发消息和添加删除消息的处理器
  • MessageRouter:消息路由接口,定义默认的输出消息通道
  • Filter:消息的过滤注解,用于配置过滤消息的表达式
  • Aggregator:消息的聚合注解,用于将多条消息聚合成一条
  • Splitter:消息的分割,用于将一条消息拆分成多条

③Binders:目标绑定器,负责与外部消息中间件系统集成的组件

  • doBindProducer:绑定消息中间件客户端发送消息模块
  • doBindConsumer:绑定消息中间件客户端接收消息模块?

④Bindings:外部消息中间件与程序提供的消息生产者和消费者(是Binder创建)之间的桥梁


说到这里,就要补充一点了,SCS提供了Kafka和Rabbit的Binder,用于集成Kafka和RabbitMQ。然后SCA(SpringCloudAlibaba)自行添加了RocketMQ的Binder,和SCS做集成


Spring Cloud Alibaba RocketMQ

架构图剖析

?对里面的各个模块,需要着重讲一下:

  • MessageChannel(output):写了output,应该知道是啥意思了,它是个消息通道,而且是负责发送消息的
  • MessageChannel(input):同样是消息通道,不过input这个是用来订阅消息的
  • Binder bindProducer:目标绑定器,就是将从发送通道出来的消息发送到RocketMQ消息服务器上
  • Binder bindConsumer:同样也是目标绑定器,将接收到RocketMQ中的消息推送给订阅通道

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-03-04 15:22:29  更:2022-03-04 15:23:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:58:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码