消息保存的主要逻辑在DefaultMessageStore这个类中。
这里先列出关于消息保存的6个要点,这6个点可以看成是整个整个流程的主干,通过了解这些,我们可以知道在消息保存的过程中,rocketmq做了些什么。然后围绕这6个要点展开,挖掘其中的细节,可以达到彻底了解消息保存的整个流程的目的。
-
public PutMessageResult DefaultMessageStore::putMessage(MessageExtBrokerInner msg)
处理入口
-
public PutMessageResult CommitLog::putMessage(final MessageExtBrokerInner msg)
将消息写入缓存中
-
public void CommitLog::handleDiskFlush(AppendMessageResult result, PutMessageResult putMessageResult, MessageExt messageExt)
消息刷入磁盘
-
public void CommitLog::handleHA(AppendMessageResult result, PutMessageResult putMessageResult, MessageExt messageExt)
主从数据同步复制
-
public void ConsumeQueue::putMessagePositionInfoWrapper(DispatchRequest request)
ConsumeQueue相关逻辑处理
-
public void IndexService::buildIndex(DispatchRequest req)
index索引相关逻辑处理
源码学习的其他方面的,有兴趣了解的可以看看: