美文网首页
RocketMQ集群消费的那些事

RocketMQ集群消费的那些事

作者: 匠心零度 | 来源:发表于2018-12-27 22:46 被阅读21次

说明

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端的处理:

[图片上传失败...(image-8507-1545921944506)]

进行跟进

[图片上传失败...(image-1bab1b-1545921944506)]

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

后面存储就和正常存在一样了,那么消息怎么再次投递呢? 如果一直投递怎么可能?

每重试一次reconsumeTimes都会+1,一直到16次(默认)

会放到DLQ死信队列。

定时消息由于涉及到内容太多,准备下次分享。

结论

通过上面分析,应该可以明白RocketMQ集群消费的大体逻辑以及执行情况,以及最佳实践,并且知道了如果一批消费n(n>1),如果最后有一条消费失败,导致发送了消费重试,那么这n条都会进行重试的。

文章github源代码地址:rocketmq,或者公号回复“rocketmq”获取源码地址。


如果读完觉得有收获的话,欢迎点赞、关注、加公众号【匠心零度】,查阅更多精彩历史!!!

相关文章

  • RocketMQ集群消费的那些事

    说明 RocketMQ集群消费的时候,我们经常看到类似注释里面 (1,(2 的写法,已经有时候有同学没注意抛异常...

  • RocketMQ实现原理吧?

    RocketMQ由NameServer注册中⼼集群、Producer⽣产者集群、Consumer消费者集群和若⼲B...

  • RocketMQ集群模式与广播模式

    RocketMQ 消费者默认是集群的方式消费的,消费者还可以用广播的模式进行消费。 集群模式 当 Consumer...

  • RocketMQ集群消费时队列分配

    RocketMQ集群消费时队列分配 何时需要消息队列 RocketMQ的核心概念 详情见于文档 PushConsu...

  • RocketMQ集群消费

    集群消费 广播消费 消费消息时使用的是push还是pull? 为什么要主动拉取消息而不使用事件监听方式? 几种常见...

  • RocketMQ消费模式

    RocketMQ提供两种消费策略CLUSTERING集群消费(默认)和BROADCASTING广播消费,在创建Co...

  • 一文带你理解 RocketMQ 广播模式实现机制

    RocketMQ 有两种消费模式,集群模式和广播模式。 集群模式是指 RocketMQ 中的一条消息只能被同一个消...

  • rocketmq客户端消费流程

    rocketmq客户端消费流程 只关注于集群模式下并发消费的push模式 组件概述 DefaultMQPushCo...

  • RocketMQ消息消费概览

    概览 RocketMQ消息消费以消费组为消费维度的,消费组之间消息消费有集群模式与广播模式两种消费模式。 广播模式...

  • rocketmq集群消费以及广播消费

    pom依赖: 生产者: 消费者: spring集成:application.yml修改: 生产端: 消费端:

网友评论

      本文标题:RocketMQ集群消费的那些事

      本文链接:https://www.haomeiwen.com/subject/rdcjlqtx.html