rocketmq源码-consumer启动

本文主要探讨RocketMQ Consumer的启动逻辑。消费者负责从Broker拉取消息并交给应用处理。启动时,Consumer作为Netty客户端与Producer有相似点,如启动NettyClient与Broker交互。不同之处在于Consumer在启动时通过负载均衡策略分配ConsumerQueue。本文关注Consumer启动过程,包括初始化Consumer对象、订阅Topic、注册回调方法、启动Consumer,以及关键的mqClientFactory.start()方法,涉及拉取消息和负载均衡的服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

这篇笔记记录consumer启动的逻辑
consumer主要是负责去broker中拉取消息,然后将拉取到的消息,交给消费者去处理
consumer本质上也是一个netty客户端,所以,在启动的时候,和producer有很多相似的点,但是有1个区别点:
1、producer的负载均衡是在真正去发送消息的时候,通过轮询的方式,选择其中的一个messageQueue;但是consumer是在启动的时候,通过负载均衡策略去分配consumerQueue

相同点:
1、producer和consumer对于broker来说,都说客户端,所以在启动时,都会启动nettyClient,nettyClient负责向broker发送消息、发送拉取消息的请求

源码

consumer的启动,入口层代码也是比较简单的,如图1所示

  1. 需要初始化一个consumer对象,这里的consumer对象和consumerGroup是存在一个映射关系的
  2. 然后订阅对应的topic即可,这里在订阅topic的时候,同时会把subExpression的信息存入到内存中,方便在后面接收到消息之后进行过滤
  3. 接着注册回调方法,这里的回调方法是真正处理消息的代码
  4. 然后调用start()方法启动即可

图1:图1

在其start()方法中,我们只关心消费者启动的代码,消息轨迹相关的,暂时先不关注,如图2所示
图2:
图2

在start()方法中,会根据当前serviceState的状态,分别进行处理
在cr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值