Rocketmq tag过滤机制 #8219
Answered
by
cserwen
2335119327
asked this question in
Q&A
Rocketmq tag过滤机制
#8219
-
看了下源码,在broker处理拉取消息请求时,会根据consumerQueue的tag的hashCode进行一次过滤 不知道有没有大佬能解答一下!万分感觉~ |
Beta Was this translation helpful? Give feedback.
Answered by
cserwen
May 31, 2024
Replies: 1 comment 4 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
cq 只存储了消息 tag 的 hashcode 信息,没有具体的 tag 值,如果想要在服务端精确过滤,必须要decode msg,这样就会增加服务端的计算压力,同时也会增加 pullMessage 的时延,
因为客户端本身就要 decode 消息,因此将精确过滤放在客户端可以很好的利用资源,broker 负责快速初筛,消费者进行最终确认。这样可以避免 broker 端的计算瓶颈,同时让消费者在相对空闲时完成过滤操作。
你说的精确过滤,服务端也是支持的,不过要用 SQL 的方式去过滤,可以参考 ExpressionMessageFilter#isMatchedByCommitLog() 方法