问题现象

某Group下的消费位点已经超过了我设置的消费位点保留时间,但却未被删除,还可以在消息队列Kafka版控制台的订阅关系里看到对应的消费位点。

说明 消费位点保留时间是消费位点的最大保留时长,从提交消费位点的时间开始计算,超过该时长的消费位点将被删除。每向一个Topic分区提交一次消费位点,该消费位点的保留时间就会被重置,从0开始计算。更多信息,请参见变更消息配置

可能原因

根据开源Kafka的设计,活跃Group的消费位点超过了消费位点保留时间,该消费位点也不会被删除。

说明 有任一存活的消费者线程的Group则是活跃Group。

例如,您创建了名为TestGroup的Group来订阅TopicA,并成功提交了消费位点。由于业务调整,您取消订阅TopicA,同时新订阅了TopicB。此时,TestGroup处于活跃状态,该Group在TopicA和TopicB上的消费位点都不会被删除。

如果您只取消订阅TopicA,同时没有新订阅TopicB,那么TestGroup处于不活跃状态。TestGroup在TopicA上的消费位点超过了保留时间后都会被删除。

此场景下,如果无法接受消费位点保留时间的等待时长,则需新建一个Group订阅TopicB,而非使用订阅过TopicA的TestGroup。如果能够接受,则可等到TopicA的消费位点被删除后,再使用TestGroup订阅TopicB。

解决方案

请根据您的业务判断是否需要新建一个Group来建立新的订阅关系。
  • 如果无法接受消费位点保留时间的等待时长,则需新建一个Group订阅新的Topic。
  • 如果能够接受消费位点保留时间的等待时长,则可待已有的消费位点被删除后,复用已有的Group订阅新的Topic。