Spring Cloud Alibaba整合RocketMQ架构原理分析

关于RocketMQ的原理,本文就不做详细分析了,这里就重点关注Spring Cloud Alibaba是如何整合RocketrMQ的。

Part.1 使用原生RocketMQ客户端?

RocketMQ提供了RocketMQ Client SDK,开发者可以直接依赖这个SDK,就可以完成消息的生产和消费。

XML 复制代码
<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-client</artifactId>
    <version>4.9.2</version> 
</dependency>

1.生产消息

RocketMQ Client SDK提供了生产消息的API接口DefaultMQProducer,开发者可以直接使用这个接口完成消息的生产。

既然是接口,且没有人和你对接,那么作为用户你就要自己搞清楚API的使用方法及最佳实践。

2.消费消息

RocketMQ Client SDK提供了消费消息的API接口DefaultMQPushConsumer和DefaultLitePullConsumer,开发者可以直接使用两个接口完成消息的消费。

同生产消息一样,开发者也要自己搞清楚API的使用方法及最佳实践。

3.开源用户不想多写一行代码

那么作为开源用户,一般大家都是喜欢投机取巧的,也就是说能少写一行代码,就尽量不写。

开发者觉得这种对接方式特别不友好,不仅自己要完成API接口的初始化,还要管理API接口的生命周期,比如初始化消费者API DefaultLitePullConsumer,且还要管理它的生命中后期。

虽然RocketMQ官方已经将API的接入方式做到尽量简单了,但是开发者还是觉得很烦,于是乎Spring Cloud Alibaba就提供了简洁的接入方式。

这里提示一下,RocketMQ官方也提供了Spring Boot Starter的接入方式,并降低了接入成本,但是开发者还是不满意,哈哈,这个就是开源用户的产品体验,真的很苛刻啊。

Part.2 Spring Cloud Alibaba整合RocketMQ

那么Spring Cloud Alibaba如何整合RocketMQ,其实本质上就是将开源用户不想写的代码统一的做成一个Satrter,并集成最佳实践并屏蔽RocketMQ Client SDK的代码细节,这样开源用户就不需要关心RocketMQ的原理细节,把自己当作为一个消息中间件小白就可以使用RocketMQ。

当然Spring Cloud Alibaba的初衷是好的,也是为了提高开源用户开发消息服务的效率。

但是作为一个已经在生产环境中使用Spring Cloud Alibaba去整合RocketMQ的开源用户,有自己的理解,利用Spring Cloud Alibaba提供的Starter去生产和消费消息,其实也是很繁琐的。

终其原因主要是Spring Cloud Alibaba整合了Spring Cloud Stream那一套机制,也就是Spring Cloud生成和消费消息的方式。

这样除了给开发者带来"只需要一个注就能生产和消费消息"的好处之外,还带来了"配置信息"非常繁琐的弊病。

也就是Spring Cloud框架的设计核心理念就是"规范配置信息",用语法来约定消息服务的规范。

假如用户之前没有使用过Spring Cloud Stream(比如Kafka、RabbitMQ),那么作为一个小白是很难理解这样的配置语法的。

XML 复制代码
spring:
  cloud:
    stream:
      rocketmq:
        binder:
          name-server: 192.168.0.182:9876
        bindings:
          output1:
            producer:
              group: function-group
              sync: true
      bindings:
        output1:
          destination: function-topic
          content-type: application/json

以上的配置语法,肯定没有原生RocketMQ的配置更加直观,开发者要理解这种配置语法,必须要站在Spring Cloud Stream架构的角度去看,你就很容易上手了,不然脑海中很难想象到,居然还需要这么长的配置信息,以及为什么要这样配置。

当然这里只是作为一个已经非常熟悉Spring Cloud Stream玩法的资深专家的角度去看待这个问题,并从开源用户的角度去发现这个痛点问题。

关于Spring Cloud Alibaba如何去整合RocketMQ,大家也可以参考我的技术类型的书籍"Spring Cloud Alibaba微服务架构实战派上下册"。

另外我的新书RocketMQ消息中间件实战派上下册,在京东已经上架啦,目前都是5折,非常的实惠。

https://item.jd.com/14337086.html​编辑https://item.jd.com/14337086.html

"RocketMQ 消息中间件实战派上下册"是我既"Spring Cloud Alibaba 微服务架构实战派上下册"之后,又一本历时超过1年半的巨无霸技术实战类型的书籍。

为了提高读者阅读本书的体验性,本书总共设计了十个特色,下面我一一的给技术小伙伴阐述一下。

【特色一】由浅到深

本书将RocketMQ 的技术原理和最佳实践体系化,按照由浅到深的顺序呈现给读者,使读者可以按照章节顺序按部就班地学习。当学习完全书内容之后,读者不仅能熟悉RocketMQ 的核心原理,还能充分理解RocketMQ的"根"。

【特色二】技术新

本书不仅包括RocketMQ4.x4.9.2 版本)的核心原理分析和最佳实践,还包括RocketMQ5.x5.1. 0版本)的新特性分析和最佳实践。

【特色三】精心设计的主线:零基础入门,循序渐进,直至彻底掌握RocketMQ

本书精心研究了程序类、架构类知识的认知规律,全书共分为6 篇: 基础; 进阶; 高级; 高并发、高可用和高性能; 应用; 新特性,是一条相对科学的主线,让读者快速从"菜鸟"向"RocketMQ分布式架构实战高手"迈进。

【特色四】绘制了大量的图,便于读者理解RocketMQ的原理、架构、流程

一图胜于文,书中在涉及原理、架构、流程的地方配有插图,以便读者更加直观地理解。

【特色五】从架构师和技术专家的视角分析RocketMQ

本书创造性地分析了RocketMQ具备高并发、高可用和高性能的功能及原理,并从架构的视角展开分析,这些也是程序员进阶为技术专家或架构师必备的技能。

以下为从架构师和技术专家的视角分析RocketMQ典型案例,读者阅读完本书之后,也能够达到这样的水准。

【特色六】不仅有原理分析,还有大量的实战案例

本书介绍了大量的实战案例,能让读者"动起来",在实践中体会功能,而不只是一种概念上的理解。

在讲解每一个知识模块时,我在思考:在这个知识模块中,哪些是读者必须实现的"标准动作"(实例);哪些"标准动作"是可以先完成的,以求读者能快速有一个感知;哪些"标准动作"具有一定难度, 需要放到后面完成。读者在实践完书中的案例之后,就能更容易理解那些抽象的概念和原理了。

本书的目标之一是,让读者在动手中学习,而不是"看书时好像全明白了,一动手却发现什么都不会"。通过体系化的理论和实战案例去培养读者的主动学习能力,这样本书的价值就会被最大化。

本书相信"知行合一"的理念,而不是"只知,而不行",避免开发人员出现眼高手低的现象。尤其是在技术面试过程中,面试官更加看重的是既懂原理,又能够主动是实践技术的技术人。

【特色七】深入剖析原理

本书以系统思维的方式,从业务功能视角剖析 RocketMQ 底层的技术原理,使读者具备快速阅读 RocketMQ 框架源码的能力。读者只有具备了这种能力,才能举一反三,实现更复杂的功能,应对更复杂的应用场景。

【特色八】从运维的视角分析 RocketMQ 的最佳实践

【特色九】参与开源

本书向读者展示了如何修改 RocketMQ 源码,并快速验证案例分析。这样,读者可以从中学到参与开源的技能,并为后续自己能够参与开源做准备。

【特色十】双色印刷,读者体验会更好

为了提高读者阅读本书的体验,在有上下两册的前提下(巨无霸,超过800页),出版社不吝啬印刷成本,依然采用双色印刷。

【推荐】本书的最佳学习路径

为了提高读者学习RocketMQ 的效率,我这边结合我自身从RocketMQ 小白到RocketMQ专家的经历,为读者汇总了一条最佳学习路径。

【寄语】作者寄语

RocketMQ是我深度参与研究的一款开源消息中间件,无论是从源码,还是架构场景,我都提炼了很多最佳实践。

在开源领域,技术小伙伴可以使用的开源消息中间件非常的多,比如KafkaPulsar 等,我之所以选择研究RocketMQ,除了工作内容和角色需要之外,更多的还是自己感兴趣,因此我建议技术小伙伴一定要先培养自己的兴趣,兴趣才是提升技术硬实力的第1要素。

当然我并不止研究了RocketMQ ,还研究了PulsarKafka 等(包括开源消息中间件生态中的主流框架),只是本书作为一本关于RocketMQ 实战派的书籍,我必须要以RocketMQ为主。

假如技术小伙伴想成为Java领域的架构师或者技术专家,我强烈建议你去研究RocketMQ,它会给你带来很多意想不到的技术和架构方法论的收获,这个也是我写本书的主要目的之一。

建议技术小伙伴按照本书设计的学习路线,逐章的去阅读和实战,这样学习效果会更好。

如果技术小伙伴有技术交流的,可以通过博文视点官方的读者群找到我的联系方式,并与我沟通,我会实时的解答读者的疑问。

本文公众号"架构随笔录"

本人视频号"架构随笔录"

【博文视点】2021年度优秀作者

2021 年我和博文视点合作了一本技术类型的书籍"Spring Cloud Alibaba微服务架构实战派上下册",它是我涉足知识输出领域以来的第一本书,同时它也是我自己积累的技术池中部分技术的产出。

为了写好那本书,我几乎花费了所有的休息时间,并主动的承担了书的售后技术辅导和咨询的职责(几乎是有问必答,坚持了整整两年)。

所谓有付出总会有回报,Alibaba 这本书的销量还不错,我也因此获得了博文视点颁发的2021年度优秀作者。

我很清楚,这个是博文视点为了鼓励我继续去用心写书,因此我又花了接近1年半的时间去写了RocketMQ消息中间件实战派上下册这本书。

所谓一分耕耘一份收获,我将我对RocketMQ的理解体系化的输出给喜欢技术的技术人,希望真的对大家有帮助。

【博文视点】2023技术成长领路人

2022 年,我开始涉足技术直播和技术讲师领域,并和博文视点合作几次技术直播,直播效果还不错,再加上我孜孜不倦的布道"Spring Cloud Alibaba 微服务架构实战派上下册"这本书相关的技术,并且这些技术都是有助于"技术人"快速成长的,因此也获得了博文视点颁发的"2023技术成长领路人"这个技术奖项,这个奖项也是为了鼓励我继续通过技术直播的方式给技术人去布道技术,因此只要我有时间,我就会孜孜不倦的去讲和聊技术。

【四维口袋】2022 KVP最具价值技术专家

2022 年,我开始涉足企业培训和相关技术直播,并和"四维口袋"合作了几次技术直播,并荣获了2022 KVP最具价值技术专家的技术奖项。

相关推荐
键盘敲没电17 分钟前
【IOS】GCD学习
学习·ios·objective-c·xcode
西陵31 分钟前
前端框架渲染DOM的的方式你知道多少?
前端·javascript·架构
海的诗篇_1 小时前
前端开发面试题总结-JavaScript篇(一)
开发语言·前端·javascript·学习·面试
AgilityBaby1 小时前
UE5 2D角色PaperZD插件动画状态机学习笔记
笔记·学习·ue5
AgilityBaby1 小时前
UE5 创建2D角色帧动画学习笔记
笔记·学习·ue5
武昌库里写JAVA2 小时前
iview Switch Tabs TabPane 使用提示Maximum call stack size exceeded堆栈溢出
java·开发语言·spring boot·学习·课程设计
一弓虽3 小时前
git 学习
git·学习
hsg774 小时前
基于nacos2.5.1的MCP服务端微服务项目开发环境配置简介
微服务·云原生·架构
DemonAvenger4 小时前
减少内存分配:Go中值类型与指针类型的选择
性能优化·架构·go
xzh4 小时前
问题:Nginx client_body_temp_path 文件会删除吗,删除时机?
nginx·架构