RocketMQ集群消费的那些事
说明

RocketMQ集群消费的时候,我们经常看到类似注释里面 (1,(2 的写法,已经有时候有同学没注意抛异常的情况就是(3 模拟的情况。那么这3种情况到底是怎么样的呢?你是否都了然于心呢?下面我们一起来看看吧,本文主要在讲解RocketMQ集群消费有些内容会提到但是不会深入讲解(以后有机会讲其他的)。
RocketMQ集群消费执行过程
虽然说是PushConsumer其实本质还是拉。

再跟进去

在继续跟进

Netty推荐使用addListener的方式来回调异步执行的结果。,关于opaque这个在RocketMQ(二):RPC通讯详细说明了。

当到broker拉取的数据返回之后:



获取到拉请求的时候存入的opaque。执行异步回调:




到这里开始执行消费情况了。

消费提交线程池。

到这里就到了真正执行消费端代码了,就是我们最开始的这个代码了:

分析
由于有3种情况,那么重点就在下面这个status这行代码了。

就是最开始讨论的三种情况了,staus的值就对应(1 (2 (3 情况了。
(1 ==》成功,status 就是成功状态
(2 ==》重试,status就是重试状态
(3 ==》null,抛异常了,status最终还是会被标记为重试状态

备注:RocketMQ最佳实践,不建议抛异常,而建议返回重试状态。

关键就在于分析这块了。

其实如果批消费400条,假如前399条都成功了,最后一条失败,返回重试的话,这400条都会发送bak到broker上面的,值得注意,并不是理所当然的那种就最后一条重试。

关于RPC这块,建议看看RocketMQ(二):RPC通讯,我们看看broker端的处理:

进行跟进



消费端发送bak过来的delayLevel都是0,重新根据消费次数+3设置,之后把消费次数+1,之后进行存储消息。


后面存储就和正常存在一样了,那么消息怎么再次投递呢? 如果一直投递怎么可能?
每重试一次reconsumeTimes都会+1,一直到16次(默认)

会放到DLQ死信队列。
定时消息由于涉及到内容太多,准备下次分享。
结论
通过上面分析,应该可以明白RocketMQ集群消费的大体逻辑以及执行情况,以及最佳实践,并且知道了如果一批消费n(n>1),如果最后有一条消费失败,导致发送了消费重试,那么这n条都会进行重试的。
文章github源代码地址:rocketmq,或者公号回复“rocketmq”获取源码地址。
如果读完觉得有收获的话,欢迎点赞、关注、加公众号【匠心零度】,查阅更多精彩历史!!!

RocketMQ集群消费的那些事的更多相关文章
- Linux Centos7.5中的RocketMQ集群部署
系统环境 Docker > centos7.5 此镜像已经安装了jdk1.8和maven3.6.0 如果你想知道这个基础镜像的具体情况, 参考此文: https://www.cnblogs.co ...
- RocketMQ 集群监控以及Hello World
RocketMQ 目前有两个版本 alibaba版本和apache版本 一.alibaba版本 tomcat部署: apache-tomcat-7.0.90.tar.gz jdk7 虚拟机redha ...
- RocketMQ集群部署记录
RocketMQ集群部署记录 #引用 https://cloud.tencent.com/developer/article/1147765 一.RocketMQ基础知识介绍 A ...
- RocketMQ集群搭建
1.RocketMQ介绍 1.1. 简介 RocketMQ 是一款分布式.队列模型的消息中间件,具有以下特点: 能够保证严格的消息顺序 提供丰富的消息拉取模式 高效的订阅者水平扩展能力 实时的消息订阅 ...
- CentOS7.4上搭建rocketMQ集群
一.rocketMQ集群部署方案优缺点对比: 多Master模式(2m-noslave) : 一个集群无Slave,全是Master,例如2个Master或者3个Master 优点:配置简单,单个Ma ...
- rocketmq学习(二) rocketmq集群部署与图形化控制台安装
1.rocketmq图形化控制台安装 虽然rocketmq为用户提供了使用命令行管理主题.消费组以及broker配置的功能,但对于不够熟练的非运维人员来说,命令行的管理界面还是较难使用的.为此,我们可 ...
- 搭建RocketMQ集群
一.环境及准备 集群环境: 软件版本: 部署前操作: 关闭防火墙,关闭selinux(生产环境按需关闭或打开) 同步服务器时间,选择公网ntpd服务器或者自建ntpd服务器 [root@es1 ~]# ...
- RocketMq 集群方式搭建 步骤教学包教包会
mq集群方式搭建 有段时间没写这些技术文章了, 今天抽空写一点,不然自己都快忘记了 这篇文章记录了rocketmq 集群方式搭建的过程, 也是自己半天的成果记录吧! 感兴趣的朋友点个赞在走呗! 好了, ...
- rocketmq集群、配置详解和常用命令
集群原文地址: http://www.cnblogs.com/520playboy/p/6716235.html 常用命令原文地址: http://www.cnblogs.com/gmq-sh/p/6 ...
随机推荐
- Android真机调试访问本地服务器(localhost)的解决方案
Android系统把它自己作为了localhost!当连接localhost都是他自己啊.. 囧,在这里晕了好久才发现.. 网上介绍的都是模拟器连接本地服务器的,我试着把链接改为http://10.0 ...
- PowerDesigner删除外键关系,而不删除外键列[转] 及编码格式
PowerDesigner删除外键关系,而不删除外键列[转] 数据库 database -> generate database ->format 设置为utf-8 PowerDesi ...
- 学习TF:《TensorFlow实战》中文版PDF+源代码
深度学习乃至人工智能正逐渐在FinTech领域发挥巨大的作用,其应用包括自动报告生成.金融智能搜索.量化交易和智能投顾.而TensorFlow为金融业方便地使用深度学习提供了可能.<Tensor ...
- 通用查询实现方案(可用于DDD)[附源码] -- 设计思路
原文:通用查询实现方案(可用于DDD)[附源码] -- 设计思路 [声明] 写作不易,转载请注明出处(http://www.cnblogs.com/wiseant/p/3988592.html). ...
- SpringMVC框架的多表查询和增删查改
必须声明本文章==>http://www.cnblogs.com/zhu520/p/7883268.html 一: 1):我的运行环境 我使用myeclipse(你也可以使用eclipse),t ...
- 【Henu ACM Round #13 E】Spy Syndrome 2
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 对m个串建立一棵字典树. 然后对主串. 尝试从第一个位置开始.在字典树中尝试匹配 如果匹配到了位置i 就再从位置i+1开始尝试匹配 ...
- Mysql学习总结(10)——MySql触发器使用讲解
触发器(TRIGGER)是由事件来触发某个操作.这些事件包括INSERT语句.UPDATE语句和DELETE语句.当数据库系统执行这些事件时,就会激活触发器执行相应的操作.MySQL从5.0.2版本开 ...
- amaze ui和bootstrap有哪些差别?
amaze ui和bootstrap有哪些差别? 问题 我最近在学amaze ui,感觉如果单从功能性来看和bootstrap最大差别也就是扁平化,不过妹子ui号称对国产本土化支持更好,这个具体表现在 ...
- 用NPOI、C#操作Excel表格生成班级成绩单
在C#中利用NPOI操作Excel表格非常方便,几乎上支持所有的Excel表格本身所有的功能,如字体设置.颜色设置.单元格合并.数值计算.页眉页脚等等. 这里准备使用NPOI生成一个班级成绩单Exce ...
- POJ 2111 DP+记录路径
题意: 思路: 类似滑雪 //By SiriusRen #include <cstdio> #include <cstring> #include <algorithm& ...
