【问题标题】:kafka offset management auto vs manualkafka 偏移管理自动与手动
【发布时间】:2020-01-16 10:22:04
【问题描述】:

我正在开发一个使用 Kafka 流的 Spring Boot 应用程序,在我的应用程序中,我想管理 Kafka 偏移量并仅在消息处理成功的情况下提交偏移量。这很重要,以确保即使 Kafka 重新启动或 zookeeper 关闭,我也不会丢失消息。我目前的情况是当我的 Kafka 宕机时,我的消费者从头开始并消费所有以前的消息。

另外,我需要知道使用 autoCommitOffset 自动管理 Kafka 偏移量和使用 HBase 或 zookeeper 或检查点手动管理它有什么区别?

另外,如果我们可以使用自动配置,手动管理它有什么好处?

【问题讨论】:

    标签: apache-kafka kafka-consumer-api


    【解决方案1】:

    你有no guarantee of durability with auto commit

    较旧的 Kafka 客户端确实使用 Zookeeper 进行偏移存储,但现在它全部在代理中以最小化依赖关系。 Kafka Streams API 无法在 Kafka 本身之外集成偏移存储,因此您必须使用 Consumer API 来查找和寻找/提交偏移到外部存储,但是,如果您选择这样做,您仍然可以最终得到低于最佳消息处理。

    我目前的情况是当我的 Kafka 宕机时,我的消费者从头开始消费所有之前的消息

    听起来你设置了auto.offset.reset=earliest,而你根本没有提交任何偏移量......

    自动提交设置执行定期提交,而不是“阅读任何消息后自动”。

    如果你想保证交付,那么你需要在生产者中至少设置acks=1,并在消费者中实际做一个commitSync

    【讨论】:

      猜你喜欢
      • 2017-07-09
      • 2017-01-26
      • 1970-01-01
      • 1970-01-01
      • 2017-03-30
      • 2017-07-17
      • 1970-01-01
      • 2018-09-22
      • 2021-03-05
      相关资源
      最近更新 更多