1

我是卡夫卡的新手。我正在做一些关于如何清除 kafka 主题中的消息的实验。我发现,如果我们将主题的“retention.ms”属性设置为一些较小的时间值,比如 1 秒,那么根据我的理解,1 秒后主题中的消息将被清除。

我运行了 1 个生产者,它产生了很少的主题消息,并在一段时间后停止了它。同时我运行了一个控制台消费者,所以它得到了生成的消息。在保留时间过去后,我为同一主题启动了另一个消费者控制台,可以说是 1-2 分钟后。但令我惊讶的是,我能够收到有关该主题的消息。当我最终在主题中没有看到任何消息时,再次在 2 分钟后启动控制台使用者。kafka 花了将近 3-4 分钟来清除消息。Kafka 是否需要任何其他设置才能立即清除消息?

4

1 回答 1

2

设置retention.ms不能保证消息会立即从主题中删除。即使它将被标记为删除。

如果你的消息是成对的,那么设置保留时间是不够的。您还必须设置以下参数:

log.cleanup.policy
log.cleaner.min.compaction.lag.ms
log.cleaner.enable

另一组参数控制消息的删除,以防它们出现在您的配置中:

log.retention.ms
log.roll.hours
于 2019-06-14T03:09:11.650 回答