我在我们的生产集群上配置了一个主题,它的保留期为432000000毫秒,即5天。但它通常持有包含10天前时间戳的最早消息!例如,今天在3月22日,我使用console consumer命令检查了该主题中的数据。第一张唱片的时间戳是3月12日。这个数据几乎在生成时同时出现在主题中,因此日志中的时间戳与排队的实际时间之间没有区别。那么,如果Kafka在配置的保留期之后存储消息,怎么会发生这种情况呢?
答案 0 :(得分:1)
保留设置是下限。
在您的示例中,这意味着Kafka不会删除任何少于5天的邮件。
磁盘上的日志分为几个部分。 Kafka仅对完整段执行删除操作,并且不会触及最新(活动)段。因此,为了删除某个段,其中的最后一条消息必须早于5天,且不能是最新的段。
默认情况下,如果新细分超过7天(log.roll.hours
= 168)或者达到最大尺寸(log.segment.bytes
= 1GB),Kafka只会推送新细分。
因此,由于尺寸原因,您似乎没有生成足够的数据来推送新细分,因此我建议减少log.roll.hours
以强制更频繁地创建新细分。