![](https://img.haomeiwen.com/i5072576/d101aeb4e2923860.png)
首先判断offset是否正确,因为consumerqueue下有可能多个文件,所以我们根据offset寻找具体的文件
![](https://img.haomeiwen.com/i5072576/d69c010b9b418d9f.png)
![](https://img.haomeiwen.com/i5072576/045b917537573bfd.png)
根据offset查询到具体的mappedFile
![](https://img.haomeiwen.com/i5072576/98ad6f48763b8432.png)
从offset到maxoffset的大小,为后面循环取消息 跳出循环做判断。
![](https://img.haomeiwen.com/i5072576/c514b349b2c9df72.png)
同时满足小于 剩余size 和获取的消息数
![](https://img.haomeiwen.com/i5072576/bab7851a03756628.png)
消息tag过滤 ,从comitlog获取消息
![](https://img.haomeiwen.com/i5072576/ec8db92c93bfca31.png)
将不是该tag的堆外内存释放,将result加入数组
首先判断offset是否正确,因为consumerqueue下有可能多个文件,所以我们根据offset寻找具体的文件
根据offset查询到具体的mappedFile
从offset到maxoffset的大小,为后面循环取消息 跳出循环做判断。
同时满足小于 剩余size 和获取的消息数
消息tag过滤 ,从comitlog获取消息
将不是该tag的堆外内存释放,将result加入数组
本文标题:broker 拉取消息的流程
本文链接:https://www.haomeiwen.com/subject/tipziltx.html
网友评论