摘要: 原創出處 http://www.iocoder.cn/RocketMQ/message-pull-and-consume-second/?csdn&2017-10-24 「芋道源碼」歡迎轉載,保留摘要,謝謝! 本文主要基於 RocketMQ 4.0.x 正式版 1、概述 2、Consumer 3、PushConsumer 一覽 4、PushConsumer 訂閱 DefaultMQPushConsumerImpl#subscribe(…) FilterAPI.buildSubscriptionData(…) DefaultMQPushConsumer#registerMessageListener(…) 5、PushConsumer 消息隊列分配 RebalanceService MQClientInstance#doRebalance(…) DefaultMQPushConsumerImpl#doRebalance(…) RebalanceImpl#doRebalance(…) RebalanceImpl#rebalanceByTopic(…) RebalanceImpl#removeUnnecessaryMessageQueue(…) RebalancePushImpl#removeUnnecessaryMessageQueue(…) [PullConsumer] RebalancePullImpl#removeUnnecessaryMessageQueue(…) RebalancePushImpl#dispatchPullRequest(…) DefaultMQPushConsumerImpl#executePullRequestImmediately(…) AllocateMessageQueueStrategy AllocateMessageQueueAveragely AllocateMessageQueueByMachineRoom AllocateMessageQueueAveragelyByCircle AllocateMessageQueueByConfig 5、PushConsumer 消費進度讀取 RebalancePushImpl#computePullFromWhere(…) [PullConsumer] RebalancePullImpl#computePullFromWhere(…) 6、PushConsumer 拉取消息 PullMessageService DefaultMQPushConsumerImpl#pullMessage(…) PullAPIWrapper#pullKernelImpl(…) PullAPIWrapper#recalculatePullFromWhichNode(…) MQClientInstance#findBrokerAddressInSubscribe(…) PullAPIWrapper#processPullResult(…) ProcessQueue#putMessage(…) 總結 6、PushConsumer 消費消息 ConsumeMessageConcurrentlyService 提交消費請求 ConsumeMessageConcurrentlyService#submitConsumeRequest(…) ConsumeMessageConcurrentlyService#submitConsumeRequestLater ConsumeRequest ConsumeMessageConcurrentlyService#processConsumeResult(…) ProcessQueue#removeMessage(…) ConsumeMessageConcurrentlyService#cleanExpireMsg(…) ProcessQueue#cleanExpiredMsg(…) 7、PushConsumer 發回消費失敗消息 DefaultMQPushConsumerImpl#sendMessageBack(…) MQClientAPIImpl#consumerSendMessageBack(…) 8、Consumer 消費進度 OffsetStore OffsetStore#load(…) LocalFileOffsetStore#load(…) OffsetSerializeWrapper RemoteBrokerOffsetStore#load(…) OffsetStore#readOffset(…) LocalFileOffsetStore#readOffset(…) RemoteBrokerOffsetStore#readOffset(…) OffsetStore#updateOffset(…) OffsetStore#persistAll(…) LocalFileOffsetStore#persistAll(…) RemoteBrokerOffsetStore#persistAll(…) MQClientInstance#persistAllConsumerOffset(…) 9、結尾