rocketmq3.26研究之六DefaultMQPushConsumer消费流程

来源:互联网 发布:魔兽争霸软件 编辑:程序博客网 时间:2024/05/19 19:32

1 假设关系图如下:

图1


2 启动流程如下:


3 一切美好的事情都从PullMessageService的run方法开始了:

  3.1 run方法会不断的从LinkedBlockingQueue中获取PullRequest对象,然后根据PullRequest进行消息拉取。

  问题1:是谁把PullRequest放到LinkedBlockingQueue中呢?

  答:参见一个consumerGroup只对应一个topic中,consumer的rebalance流程,rebalance完毕会将PullRequest放到LinkedBlockingQueue中,对于图1中的关系,会产生8个PullRequest,分别对应              broker_a的q0~q3和broker_b的q0~q3

  问题2:PullRequest是什么?


  问题3:具体如何进行消息拉取?

  答:代码参见DefaultMQPushConsumerImpl.pullMessage(PullRequest pullRequest) 

  大概如下:


0 0
原创粉丝点击