我是Kafka的新手。我正在做一些关于如何清除kafka主题中的消息的实验。我发现,如果将某个主题的“ retention.ms”属性设置为较小的时间值(例如1秒钟),则按照我的理解,该主题中的消息将被清除1秒。
我运行了1个生产者,该生产者只生成了很少的主题消息,并在一段时间后将其停止。同时,我运行了一个控制台使用者,因此它获得了生成的消息。 保留时间过去后,我在1-2分钟后启动了另一个用于相同主题的使用者控制台。但是我也很惊讶我能够获得有关该主题的消息。 2分钟后,当我再次未在主题中看到任何消息时,再次启动了控制台使用者。卡夫卡花了将近3-4分钟的时间才能清除邮件。 Kafka是否需要任何其他设置,以便即时清除邮件?
答案 0 :(得分:2)
设置retention.ms
不能保证消息将立即从主题中删除。即使将其标记为删除。
如果您的消息是成对的,则设置保留时间不够好。您还必须设置以下参数:
log.cleanup.policy
log.cleaner.min.compaction.lag.ms
log.cleaner.enable
如果配置中存在消息,则另一组参数控制消息的删除:
log.retention.ms
log.roll.hours