深入理解RocketMQ:Consumer消费消息原理
前言
RocketMQ版本:4.8
Consumer类型:DefaultMQPushConsumer
原理解析
consumer 启动时做了哪些事情?
定时从NameSrv获取最新的Topic+Queue+Broker路由信息,获取频率默认30秒,可以通过参数 pollNameServerInterval 进行设置
创建类型为LinkedBlockingQueue的队列pullRequestQueue,用于存放PullRequest请求对象。
创建线程RebalanceService,主要用于执行负载均衡。 默认根据平均分配原则,为当前consumer分配对应数量的queue。随后遍历queue分别创建PullRequest,放入队列pullRequestQueue。
PS:这项工作默认20秒执行一次,可以通过System.setProperty(“rocketmq.client.rebalance.waitInterval”) 修改
Queue分配完毕后,如果线程是第一次运行,会向Broker发送请求获取当前Consumer对应每个Queue的消费进度。取值结果受Consumer消费策略 consumeFromWhere 影响,默认是获取上次消费的进度。
创建线程PullMessageService,不断地从pullRequestQueue拉取数据。取到PullRequest就通过Netty发送类型为RemotingCommand的消息,code=RequestCode.PULL_MESSAGE
深入理解RocketMQ:Consumer消费消息原理相关推荐
- Kafka学习(十)--Kafka消费者Consumer消费消息配置实战
一. Kafka消费者Consumer消费消息配置实战 配置: public static Properties getProperties() {Properties props = new Pro ...
- RocketMq : 消费消息的两种方式 pull 和 push
文章目录 1.概述 两种方式的优缺点对比: push pull 1.概述 原创在:https://blog.csdn.net/zhangcongyi420/article/details/905483 ...
- RocketMQ(九):rocketMQ设计的全链路消息零丢失方案?+rocketmq消息中间件事务消息机制的底层实现原理?+half是什么?+half消息是如何对消费者不可见的?
前言: 目前rocketmq更新已经更新了11篇博客了,预计接下来的2-3篇是暂时的更新进度了,准备更新一下springboot或者是jvm,mysql相关的专题出来,后续更新完事后,再分享一些实战性 ...
- rocketmq 顺序消费_必须先理解的RocketMQ入门手册,才能再次深入解读
推荐阅读一下下 2020年后想跳槽?MQ.ZK.Nginx.Kafk等分布式技术你都掌握了? 阿里架构师推荐学习的<RabbitMQ实战指南>,渣渣的你都看过吗? RocketMQ入门手册 ...
- 分布式事务:RocketMQ实现分布式事务原理
之前讲过有关分布式事务2PC.3PC.TCC的理论知识,博客地址: 1.分布式事务(1)---2PC和3PC原理 2.分布式事务(2)---TCC原理 这篇讲有关RocketMQ实现分布式事务的理论知 ...
- 深入剖析 RocketMQ 源码 - 消息存储模块
作者:vivo互联网服务器团队-Zhang Zhenglin 一.简介 RocketMQ 是阿里巴巴开源的分布式消息中间件,它借鉴了 Kafka 实现,支持消息订阅与发布.顺序消息.事务消息.定时消息 ...
- rocketmq 重复消费_RocketMQ的十二个特性,你都知道吗「下」
接上文,今天继续. 9 消息重试 Consumer消费消息失败后,要提供一种重试机制,令消息再消费一次.Consumer消费消息失败通常可以认为有以下几种情况: 由于消息本身的原因,例如反序列化失败, ...
- 可消费消息数量_17 个方面,综合对比 主流消息队列
一.资料文档 二.开发语言 三.支持的协议 四.消息存储 五.消息事务 六.负载均衡 七.集群方式 八.管理界面 九.可用性 十.消息重复 十一.吞吐量TPS 十二.订阅形式和消息分发 十三.顺序消息 ...
- activemq nodejs stomp 重连机制_5分钟优劣分析 Kafka、RabbitMQ、RocketMQ、ActiveMQ消息队列...
一.资料文档 Kafka:中,有kafka作者自己写的书,网上资料也有一些. rabbitmq:有一些不错的书,网上资料多. zeromq:少.没有专门写zeromq的书,网上的资料多是一些代码的实现 ...
最新文章
- 一分钟就可以轻松将文字转换成语音,简单方法讲解
- 产品网络推广方案之网站SEO优化如何“讨好”用户,降低网站跳出率?
- 基于MATLAB的面向对象编程(5)——对象的保存(save)和载入(load)
- T511K表之工资常量SIINS的用途
- 基于FPGA实现DAC8811接口(正弦波)
- 计算机 64位和32位区别,32位和64位的区别
- QEMU 源代码阅读经验开山之作
- C#判断当前运行环境是否64bit
- 思科模拟器叫什么_宇宙无敌上帝视角无所不能之星球生成模拟器。
- 我是直接学Swift还是Objective-C?
- wav文件头修复_贴唱混音之二——音频修复
- 排序算法之十 希尔排序(C++版本)
- 廖雪峰java教程 pdf_廖雪峰java学习笔记.pdf
- 电子报纸的分析即制作
- java基础学安卓开发_Android开发学习路线之Java基础学习
- 服务器千兆网卡芯片,Intel 82574L and 82576 千兆网卡芯片区别.pdf
- ubuntu lotus testnet-staging
- 各类证件类型的格式校验
- Java继承的综合案例——群主发红包
- 两年保存的网页标签分享
热门文章
- SAP修改已经释放的请求
- ABAP-在SMARTFORMS中取消使用WORD作为编辑器
- SAP实施方法论之探讨-现状调研与需求分析
- 常用的SAP系统FM
- ABAP 几个文件相关的函数
- python中的字符串是什么,一文秒懂Python中的字符串
- linux php后门,Linux_一个初级的linux后门制作方法,众所周知,Linux的文件权限如: - phpStudy...
- 右键菜单无响应_给电脑添加右键菜单重启资源管理器,让电脑不再死机!
- mysql ddl dcl_MySQL常用DDL、DML、DCL语言整理(附样例)
- 修改 oracle dbid,更改数据库DBID