RocketMQ中CONSUME_FROM_LAST_OFFSET 计算逻辑是什么?

RocketMQ中CONSUME_FROM_LAST_OFFSET 计算逻辑是什么?

展开
收起
vncamyi27xznk 2021-11-27 18:35:57 802 分享 版权
1 条回答
写回答
取消 提交回答
  • image.png

    代码@1:使用 offsetStore 从消息消费进度文件中读取消费消费进度,本文将以集群模式为例展开。稍后详细分析。 代码@2:如果返回的偏移量大于等于 0,则直接使用该 offset,这个也能理解,大于等于 0,表示查询到有效的消息消费进度,从该有效进度开始消费,但我们要特别留意 lastOffset 为 0 是什么场景,因为返回 0,并不会执行 CONSUME_FROM_LAST_OF FSET(语义)。 代码@3:如果 lastOffset 为-1,表示当前并未存储其有效偏移量,可以理解为第一次消费,如果是消费组重试主题,从重试队列偏移量为 0 开始消费;如果是普通主题,则从队列当前的最大的有效偏移量开始消费,即 CONSUME_FROM_LAST_OFFSET 语义的实现。 代码@4:如果从远程服务拉取最大偏移量拉取异常或其他情况,则使用-1 作为第一次拉取偏移量。 上述执行的现象,虽然设置的是 CONSUME_FROM_LAST_OFFSET,但现象是从队列的第一条消息开始消费,根据上述源码的分析,只有从消费组消费进度存储文件中取到的消息偏移量为 0 时,才会从第一条消息开始消费 答复内容摘自《Apache RocketMQ 从入门到实战》,这本电子书收录开发者藏经阁 下载连接:https://developer.aliyun.com/topic/download?id=1139

    2021-11-27 20:52:50
    赞同 展开评论

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

收录在圈子:
+ 订阅
阿里云 云原生应用平台 肩负阿里巴巴集团基础设施云化以及核心技术互联网化的重要职责,致力于打造稳定、标准、先进的云原生产品,成为云原生时代的引领者,推动行业全面想云原生的技术升级,成为阿里云新增长引擎。商业化产品包括容器、云原生中间件、函数计算等。
还有其他疑问?
咨询AI助理