rocketmq源码-pull模式拉取消息、同步拉取消息

本文深入探讨RocketMQ消费者在同步模式下拉取消息的源码实现。从DefaultLitePullConsumerImpl的start()方法开始,讲解了如何启动拉取任务,包括更新ProcessQueueTableInRebalance、messageQueueChanged和PullTaskImpl的运行逻辑。重点解析了发起同步Netty请求的pull()方法和submitConsumeRequest的过程,以及消费者如何通过poll()方法拉取消息。
摘要由CSDN通过智能技术生成

前言

上一篇博客,记录的是push模式,异步发送netty请求拉取消息的代码,这篇博客主要记录consumer发送同步netty请求,去拉取消息的逻辑,但是对于同步发送请求,需要结合LitePullConsumer来看

在Lite PullConsumer中有两种方式,分别是:subscribe和assign模式,这两种模式的区别,我的理解是:前者是mq帮我们进行负载均衡,后者我们可以按照自己的需求去进行负载均衡,给当前消费者分配messageQueue

但是这两种模式的相同点是:都是采用的pull模式,需要在消费者这一端,主动的去pull消息

对于使用同步发送请求的consumer,需要这样使用
在这里插入图片描述

所以可以看到,对于pull模式,就是在业务代码中自己去poll的,接着我们来看源码

源码

start()

org.apache.rocketmq.client.impl.consumer.DefaultLitePullConsumerImpl#start

如图1所示:在这个start()方法中,有两个方法需要着重关注下,就是mqClientFactory.start()和operateAfterRunning()
前面这个方法已经看了好多次了,后面这个方法是assign模式的时候,会取启动task任务,这个后面再说

图1:
在这里插入图片描述

我们先来看mqClientFactory.start(),和这篇博客有关系的,是这里面负载均衡的逻辑
这个调用链中间的逻辑,比较简答,就不介绍了,我们主要关注和pull模式拉取消息有关的逻辑

this.rebalanceService.start();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值