服务器程序员札记:RocketMQ:push consumer 拉取消息

DefaultMQPushConsumer拉取消息的启动:

1.DefaultMQPushConsumer.start() 调用 DefaultMQPushConsumerImpl.start()

2.DefaultMQPushConsumerImpl.start() 调用 MQClientInstance.start()

3.MQClientInstance.start() 调用 RebalanceService.start()

4.RebalanceService作为线程启动后,在run方法中使用rocketmq.client.rebalance.waitInterval属性所定义的间隔,调用MQClientInstance.doRebalance()

5.MQClientInstance.doRebalance() 调用 DefaultMQPushConsumerImpl.doRebalance()

6.DefaultMQPushConsumerImpl.doRebalance() 调用 RebalancePushImpl.doRebalance()

7. RebalancePushImpl.doRebalance() 是在父类RebalanceImpl中定义的。在方法中调用rebalanceByTopic,嵌套调用updateProcessQueueTableInRebalance,嵌套调用dispatchPullRequest。

8.RebalanceImpl.dispatchPullRequest() 方法由RebalancePushImpl覆写,在方法中将调用DefaultMQPushConsumerImpl的executePullRequestImmediately(requests)方法。由此启动push consumer 对消息的拉取。

DefaultMQPushConsumer拉取消息的循环:

在PullCallback中,如果成功获取消息,根据DefaultMQPushConsumer中的pullInterval变量重新发起pull request。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值