首页 > 编程语言 >RocketMq 拉取数据流程源码分析

RocketMq 拉取数据流程源码分析

时间:2024-08-01 22:29:31浏览次数:15  
标签:队列 拉取 --- 源码 rocketmq 数据 节点 RocketMq

从一个问题开始
1、一个boker,一个主题,两个队列,一个消费者组,一个消费节点,此时两个队列是落在一个消费节点上,请问这个消费节点是如何拉取数据的?

需要明确关键对象之间的关系。
关键对象有:
1、RebalancePushImpl---》队列经过相关负载均衡算法,最终哪些队列落在当前节点上
2、DefaultMQPushConsumerImpl ----》当前节点向队列拉取数据
3、PullAPIWrapper ---》底层通过netty,向rocketmq服务器拉取数据,最终将数据存放在缓存队列中
4、PullMessageService ---》 循环从缓存队列中获取数据,并将数据分发给后面的处理线程池或单线程

org.apache.rocketmq.client.impl.consumer.RebalancePushImpl#dispatchPullRequest --->队列经过相关负载均衡算法,最终哪些队列落在当前节点上,保存在缓存队列中(此时一个节点有两个mq队列)
org.apache.rocketmq.client.impl.consumer.PullMessageService#run (关键)
--->定时从缓存队列中弹出 PullRequest(mq队列),
--->org.apache.rocketmq.client.impl.consumer.DefaultMQPushConsumerImpl#pullMessage (关键)向rocketmq服务器拉取某个mq队列的数据,

20240801
从线程维度进行观察:单线程拉取数据,再将数据分发给消费线程池去处理(并发模式)

标签:队列,拉取,---,源码,rocketmq,数据,节点,RocketMq
From: https://www.cnblogs.com/vingLiu/p/18337712

相关文章

  • Cool Request重大更新:可以统计任意方法耗时【送源码】
    什么是CoolRequestCoolRequest是一个IDEA中的接口调试插件,除了可以发起基本的HTTP请求之外,还提供了强大的反射调用能力,可以绕过拦截器,这点广受网友的好评,当然伴随着还有Spring中对@Scheduled注解的调用,以及xxl-job的支持,这是不是很酷(Cool)?什么是Trace我怀着一颗激动的心......
  • 大文件上传最全方案!!【送源码】
    文件上传是一个老生常谈的话题了,在文件相对比较小的情况下,可以直接把文件转化为字节流上传到服务器,但在文件比较大的情况下,用普通的方式进行上传,这可不是一个好的办法,毕竟很少有人会忍受,当文件上传到一半中断后,继续上传却只能重头开始上传,这种让人不爽的体验。那有没有比较好的......
  • 基于SpringBoot+Vue+uniapp的横向课题信息管理系统的详细设计和实现(源码+lw+部署文档
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 顺序消费rocketMQ(FIFO先进先出)和小技巧 取模运算的周期性特征来将数据分组。
    20240801一、顺序消费MQ(FIFO先进先出)介绍二、一个小技巧,对于取模运算,用来在几以前进行随机选取,取模运算的周期性特征来将数据分组,使用场景对于取模会重复问题一、顺序消费MQ(FIFO先进先出)介绍发送顺序和消费顺序保持一致默认情况消费方式是并发模式,会导致消息乱序......
  • 基于Python+Django协同过滤算法的招聘信息推荐系统设计与实现(源码+数据库+讲解)
    文章目录前言详细视频演示项目运行截图技术框架后端采用Django框架前端框架Vue可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......
  • 基于Java+SpringBoot+Vue的电竞交互管理系统设计与实现(源码+lw+部署文档+讲解等)
    文章目录前言项目运行截图技术框架后端采用SpringBoot框架前端框架Vue可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......
  • mac 源码编译安装php8.3.9
    前提条件确保你已经安装了Homebrew和XcodeCommandLineTools。你可以通过以下命令安装它们:/bin/zsh-c"$(curl-fsSLhttps://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"xcode-select--installhttps://www.cnblogs.com/niuben/p/16109703.html安装必要......
  • 使用Canal监听Binlog将数据发送到RocketMQ
    文章目录一、部署RocketMQ二、部署MySQL1、开启mysql的binlog写入功能2、创建一个有相关权限的mysqlslave账号三、部署Canal1、修改conf/canal.properties配置文件2、修改conf/example/instance.properties配置文件四、实际操作一、部署RocketMQwin11部署Rocke......
  • SpringBoot+Vue物流快递仓库管理系统-附源码与配套论文
    1.1研究背景 随着网络不断的普及发展,物流快递仓库管理系统依靠网络技术的支持得到了快速的发展,首先要从员工的实际需求出发,通过了解员工的需求开发出具有针对性的首页、个人中心、员工管理、客户信息管理、驾驶员管理、仓库管理、配送管理、运输管理管理等功能,利用目前网络给......
  • PHP源码_最新同城上门家政按摩H5小程序源码_上门预约系统
    后端thinkphp框架开发。前端采用uni-app开发,适配多端(小程序+公众号H5+APP)此套源码并非网上免费流传版本,自掏腰包购入,完整无错不需要授权!项目运行截图源码贡献https://githubs.xyz/boot?app=43功能介绍1、数据概况(新增业务城市用户投票功能,更加直观的查看业务城市的关注......