RocketMQ 拉取消费过滤条件的问题

yesterdaysun · 2024-7-26 18:11:07 · 100 次点击
本地搭了一个 RocketMQ 研究一下, 版本 5.0, 然后本地起了一个 SimpleCondumer 做拉取 pull, 一开始都挺正常的, 消息能正常推送, 然后客户端正常能拉取到

然后当我设置了 filter 之后就不对了, 我给客户端设置了一个特定的 tag 条件, 当这个 tag 值的消息生产后, 能正常消费, 但是如果是其他 tag 值的消息生产后, 奇怪的来了, 客户端日志显示没有接收到任何消息, 但是在 mq 那里显示消息已经被消费掉了

可以确定不是其他什么消费者把消息处理了, 因为如果这个客户端不启动, mq 可以看到消息一直是未处理状态, 客户端一启动, 未处理就是 0 了, 但是客户端接受消息也是 0 条, 那条消息到底怎么被消费掉了完全不知道

各位大佬有知道这是什么问题的吗?
举报· 100 次点击
登录 注册 站外分享
7 条回复  
onepunch 小成 2024-7-26 18:28:08
有时间问不如去看看文档

https://rocketmq.apache.org/zh/docs/featureBehavior/07messagefilter
GooMS 小成 2024-7-26 20:34:39
咱俩头像风格挺像的
Scarb 小成 2024-7-26 21:13:06
你这个现象就是正常的啊,过滤不是说这个消息还会在未消费消息那里,而是拉取了之后不处理。
xiaofan2 小成 2024-7-26 22:29:21
@yesterdaysun 你理解的不对  你可以理解为每个消费组都维护自己的消费进度  消费的过滤是在 broker 这里做的  而不是真正的到了你的消费者
l970090853 小成 2024-7-27 10:48:51
原因是 RocketMQ 的消费者是全额拉取 topic 的消息,然后在本地过滤的。(不是该消费者配置 tag 的消息会被过滤掉)
比如只有 t1 ,t2 两条消息,则消费者拉取到[t1, t2]两条消息,过滤了后只剩 t1 一条消息,然后吐给你的 listener 处理。
quan7u 小成 2024-7-27 10:55:23
--“ 但是在 mq 那里显示消息已经被消费掉了”
mq 应该显示「消费但过滤」(消费组各自维护消费进度)这个你设置不同消费组消费不同的 tag 就能看出区别
lingalonely 小成 2024-8-12 00:15:31
对应你当前的消费者的确是消费了,过滤掉意味当前消费者不会再消费了,如果不是,那 offset 该怎么走
返回顶部