Kafka Broker 中的保留期可以为零吗?

You*_*Luo 5 apache-kafka

保留期为零在 kafka borker 中有意义吗?

我们希望通过 kafka 代理将消息从生产者快速转发到消费者。来自代理计算机上的 buffercache/pagecache,无需刷新到磁盘。我们不需要复制并假设我们的代理永远不会崩溃。

Gio*_*ous 5

当一条消息生成到 Kafka 主题时,它会被写入磁盘。一旦消息被消费,该消息的偏移量将由消费者提交(如果您使用的是高级消费者 API),但是,没有功能可以仅删除已消费的消息(许多消费者可能订阅相同的主题,其中一些可能已经消耗了该消息,而另一些可能没有)。

对于您的情况,我建议设置较短的保留期(默认设置为 7 天),但留出合理的时间,以便您的消费者能够使用消息。为此,您只需在 中配置以下参数server.properties

log.retention.ms=X 
Run Code Online (Sandbox Code Playgroud)

请注意,不能保证您的消费者已成功使用已删除的消息。例如,如果您将保留期设置为 2 秒(即log.retention.ms=2000)并且您的消费者崩溃了,那么在消费者关闭时发送到主题的每条消息都将丢失。