拉取信息的流程小结|学习笔记

简介: 快速学习拉取信息的流程小结

开发者学堂课程【RocketMQ 知识精讲与项目实战(第三阶段)拉取信息的流程小结】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/704/detail/12499


拉取信息的流程小结

 

内容介绍:

一、牵扯的类

二、总体流程

 

一、牵扯的类

image.png在这个过程当中牵扯到了几个重要的类,第一个就是 PullMessageService、第二个是 DefaultMQPushConsomerlmpl, 第三个是 MQlientAPllmpl以及PullMessageProfessor 这几个类的作用是什么?这几个类的作用,首先PULLmessage service的主要作用是发起拉取消息的请求。然后拉取消息的请求的处理是由DefaultMQPushConsomerlmpl去进行。真正的再去给客户端呢发出请求,去访问这个broker网络的,是由MQlientAPllmp发起的,然后PullMessageProfessor这个类是BROKER端处理请求的这个类。

 

二、总体流程

整个的流程是由线程 run 先启动起来之后,如果要处理请求,就从 PullRequest 的队列当中拿到一个请求对象,然后把这个请求对象进行提交,提交到 processQueue 中,由它具体去处理。

那它怎么处理?首先去做了一个流控,这个流控是通过两个方面去做,第一个是看消息的数量,如果已经大于1000条了或者消息的大小大于100兆,就暂时停止。如果这两个条件都没满足,那么需要拉取新的消息,就获得主题订阅的信息。然后构建消息拉取的系统标记,去解析 broker 地址,去发起异步拉取的一个请求,同步跟异步在这个过程当中基本上是差不多的,如果是异步,它是一个线程,

它会向服务端发送 RequestCode.PULL_MESSAGE 去进行处理,这个地方发完之后紧接着返回 pullRequestQueue take 又开始去做一个循环。顺着服务端继续往下,向服务端发送拉取的请求开始请求服务端。在服务端这里边首先从 Store,就是Defaultstore 当中去拿出这个消息,然后去进行一下消息的过滤,把正常能够返回给你的消息返回给我们的调用方,要调用方去解码,解码之后要有一个 pullback 给它回调。Pullback 的回调,其实也会做一个过滤的一个逻辑,然后再去将这个渠道的消息提交到消费者的这个消费线程池当中去进行一个处理。

整个过程,其实最重要的就牵扯到四个类,通过这四个类去完成消息的发送,请求的发送,最终,再会做一个响应回来,以上是整个消息拉取的小结。

相关文章
|
视频直播
【视频直播篇五】vue-cli3集成vue-aliplayer-v2
本文着重介绍vue-cli3集成vue-aliplayer-v2
879 0
|
Web App开发 移动开发 JavaScript
【视频直播篇一】入门篇
公司产品要集成视频直播,原来找的一家第三方厂家已经对接好了,后来领导说成本太高要换。拿到同行的产品来看,发现他们用的是rtmp协议的直播流。领导说要上这个,把这个任务交给我,当时都蒙圈了。这啥玩意?!从来没见过啊。领导的话就是命令,没办法,硬着头皮也要上。 花了几天时间稍微入了门,在这里总结一下。 首先直播中有两个非常重要的概念:推流、拉流。通俗来讲,推流指的就是我们在直播平台看到的主播那一端采集摄像头数据推送到视频流服务器。而拉流就是观众这一段使用pc、移动端播放直播视频了。
899 0
|
5月前
|
缓存 小程序 视频直播
基于uni-app+vite5+vue3实战短视频+直播+聊天app应用
基于uniapp+vue3+vite5从0-1实战搭建仿抖音/微信直播带货商城。集短视频+聊天+直播功能于一体。实现全屏沉浸式切换短视频/直播,支持编译运行到h5+小程序端+app端。
400 4
|
数据采集 测试技术 Swift
666条数据,训练LongWriter模型,写万字长文!模型&数据集均开源!
大模型的上下文(Context)支持越来越长的背景下,让通用的大模型遵循指令来保障长文本输出的长度,依然是一个挑战。
|
JavaScript
Vue学习之--------深入理解Vuex之多组件共享数据(2022/9/4)
这篇文章通过一个实际的Vue项目案例,演示了如何在Vuex中实现多组件间共享数据。文章内容包括在Vuex的state中新增用户数组,创建Person.vue组件用于展示和添加用户信息,以及在Count组件中使用Person组件操作的数据。通过测试效果展示了组件间数据共享和状态更新的流程。
Vue学习之--------深入理解Vuex之多组件共享数据(2022/9/4)
|
Kubernetes 调度 Docker
玩转Kubernetes—使用minikube操作集群
玩转Kubernetes—使用minikube操作集群
1003 0
|
前端开发
rgba、十六进制颜色是什么?如何这两个表达白色、黑色、红色、绿色、蓝色?
rgba、十六进制颜色是什么?如何这两个表达白色、黑色、红色、绿色、蓝色?
|
关系型数据库 Java 数据库连接
如何利用Mybatis-Plus自动生成代码(超详细注解)
如何利用Mybatis-Plus自动生成代码(超详细注解)
5268 1
|
敏捷开发 测试技术 持续交付
软件开发过程中的最佳实践和代码质量评估
在软件开发过程中,采用最佳实践和评估代码质量对于确保软件的稳定性和可维护性至关重要。通过明确的需求、合理的开发流程、良好的代码规范以及严格的代码评估,我们可以降低软件开发过程中的风险,并提升开发效率和软件质量。
1633 2
|
小程序 JavaScript 前端开发
springboot+vue基本微信小程序的二手车交易平台
首先,论文一开始便是清楚的论述了小程序的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了小程序的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计。本项目软件架构选择B/S模式,总体功能模块运用自顶向下的分层思想。再然后就是实现系统并进行代码编写实现功能。论文的最后章节总结一下自己完成本论文和开发本项目的心得和总结。通过二手车交易平台小程序将会使我来运动各个方面的工作效率带来实质性的提升。
382 0