rocketmq通过tag过滤踩坑

image.png

两个consumer接收相同的topic,不同tag的消息,但是当处方系统发送tagA的消息的时候,consumer2消费了,本来consumer2应该是要丢弃掉的,但是却消费了,主要问题就是配置了相同的Group。

问题分析
  (1)首先这是broker决定的,不是consumer端决定的
  (2)Consumer端发心跳给Broker,Broker收到后存到consumerTable里(就是个Map),key是GroupName,value是ConsumerGroupInfo。
  (3)ConsumerGroupInfo包含topic、tag等信息,但是问题就出在上一步骤,key是groupName,相同GroupName的话Broker心跳最后收到的Consumer会覆盖前者的。

如果换成BROADCASTING,会收到全部消息,而不是一半,因为广播是广播全部Consumer。会导致重复消费

解决方法:
针对不同的tag配置不同的group即可。
解决效果可以从监控平台看到如下:
一个group过滤了消息,一个group消费了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容