十二、RocketMQ源码分析消息过滤机制上篇—–消息消费服务端过滤与TAG模式过滤实现
1、消息消费过滤机制
1.1 根据 tagcode 过滤


1.2 高级过滤

上述资源来源于 RocketMQ 官方文档。
通过官方文档,我们基本可以知道,消息的过滤机制与服务端息息相关,更细一点的讲,与拉取消息实现过程脱离不了关系,事实上也的确如此,MessageFilter 的使用者也就是 DefaultMessageStore#getMessage 方法,为了弄清楚消息过滤机制,我们先看一下 MessageFilter 接口,然后详细再浏览一下消息拉取实现细节。
MessageFilter 接口类:
boolean isMatchedByConsumeQueue(final Long tagsCode, final ConsumeQueueExt.CqExtUnit cqExtUnit);
isMatchedByConsumeQueue 、isMatchedByCommitLog 的区别是什么?从字面上理解,一个过滤基于 ConsumeQueue,一个基于CommitLog 过滤,为什么需要这样呢?请带着上面的问题开始后面的探索。