主题级别的kafka偏移量和日志保留配置

kafka offset and log retention configuration at topic level

我们有一个包含 5 个分区的主题。我们正在根据密钥的校验和定义分区。在某些情况下,没有密钥解析到分区 3,因此没有提交。因此,在配置的偏移量保留天数之后,消费者当前偏移量开始显示未知。我们需要解决这个问题,因此认为我们必须在主题级别设置日志和偏移量保留。 在配置中,我看到我们有 config:retention.ms 用于日志保留,但没有找到相应的偏移量保留配置。有人可以帮忙吗。

编辑: bin/kafka-topics.sh --zookeeper XXX --alter --topic XXXX --config retention.ms=86400000

以上用于设置特定主题的日志保留时间。但是我们如何在查询中指定偏移量保留。

我想你正在寻找 log.retention.bytes

然而,在保留期内根本没有数据是您应该解决的问题。通过减少分区数或使用其他算法来创建密钥。

所有消费者和所有主题的承诺消费者偏移量都存储在一个内部“__consumer_offsets”主题中。因此,恐怕您无法单独控制每个主题的偏移量保留。

注意。我发现当您的主题分区之一长时间没有消息时,这可能会出现问题。

我发现以下工单可以提供帮助: https://issues.apache.org/jira/browse/KAFKA-3806

第一条评论建议即使在消费者没有取得任何进展(给定分区没有新消息到达)的情况下也要提交偏移量,以避免这个确切的问题:

you would want to keep committing the offsets even though they are not changing

您可以使用参数 "offsets.retention.minutes" 在 server.properties 中配置偏移保留。默认值为 1440

偏移量保留是系统范围的,因此您不能在单个主题级别设置它