Skip to content

Rocketmq tag过滤机制 #8219

Answered by cserwen
2335119327 asked this question in Q&A
May 29, 2024 · 1 comments · 4 replies
Discussion options

You must be logged in to vote

cq 只存储了消息 tag 的 hashcode 信息,没有具体的 tag 值,如果想要在服务端精确过滤,必须要decode msg,这样就会增加服务端的计算压力,同时也会增加 pullMessage 的时延,

因为客户端本身就要 decode 消息,因此将精确过滤放在客户端可以很好的利用资源,broker 负责快速初筛,消费者进行最终确认。这样可以避免 broker 端的计算瓶颈,同时让消费者在相对空闲时完成过滤操作。

你说的精确过滤,服务端也是支持的,不过要用 SQL 的方式去过滤,可以参考 ExpressionMessageFilter#isMatchedByCommitLog() 方法

Replies: 1 comment 4 replies

Comment options

You must be logged in to vote
4 replies
@cserwen
Comment options

cserwen May 31, 2024
Collaborator

Answer selected by 2335119327
@2335119327
Comment options

@genglongsir
Comment options

@cserwen
Comment options

cserwen Oct 14, 2024
Collaborator

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
3 participants