两个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消费了。