问题描述
一些主题已经添加,一些不再订阅,还有一些以前订阅过,现在还在订阅。
我想删除活动消费者不再订阅的主题 的 ConsumerGroup 偏移量。否则这些主题的滞后仍然会被列出并增加,从而导致监控中的错误声明
我知道 --delete-offsets
CLI 工具的 kafka-consumer-groups
选项。但在这里我需要知道受影响的主题并将它们全部列出。是否有一种通用方法可以在不知道主题名称的情况下删除活动消费者的过时主题?
谢谢!
解决方法
您可以更改 __consumer_offsets
主题的配置并进行操作。
-
将
cleanup.policy
配置更改为delete
cleanup.policy
的默认__consumer_offsets
被压缩,因此旧消息永远不会被删除,因为同一个键没有新消息。因为你在听不同的主题分区。 -
将
retention.ms
更改为86400000
(一天)或您的首选持续时间主题的默认
retention.ms
为 604800000(7 天)。将其减少到一天(首选时间)将删除cleanup.policy=delete
主题中早于此时间的过去日志。
等待保留时间。它将删除旧日志
-
在
cleanup.policy
主题中再次将compact
更改为__consumer_offsets
这是最重要的一步。因为否则,如果您的消费者暂停一段时间,最后消费的偏移量将从
__consumer_offsets
主题中删除,并且没有任何痕迹。
为此,您无需了解过去的主题或消费者组 ID。但这是有风险的,因为您的所有消费者组上次消费的偏移量都会被删除。
如果这不能清除您的旧日志,请检查您的段。因为可能不会推出细分市场。如果没有旧段,您需要减少 segment.ms
或 segment.bytes
以频繁推出段。并回滚这些更改。