【问题标题】:Can we have retention period of zero in Kafka broker?我们可以在 Kafka 代理中将保留期设为零吗?
【发布时间】:2019-08-06 22:37:32
【问题描述】:

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

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

【问题讨论】:

  • 您的意思是永久保留消息还是在消费后立即删除?
  • @GiorgosMyrianthous 在消费后立即删除,最好不写入磁盘...生产者将页面缓存代理给消费者..可以完成吗?或者它需要先由代理刷新到操作系统,然后消费者才能轮询它
  • 这是不可能的。看我的回答。
  • 这可能会有所帮助:stackoverflow.com/questions/54046617/…

标签: apache-kafka


【解决方案1】:

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

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

log.retention.ms=X 

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    • 2017-12-23
    相关资源
    最近更新 更多