【问题标题】:Kafka offset managementKafka 偏移管理
【发布时间】:2017-07-17 14:00:00
【问题描述】:

我们正在使用 Kafka 0.10... 我在网上(和文档中)看到一些关于当 enable.auto.commit 为 TRUE 时如何在 kafka 中管理偏移量的相互矛盾的信息。检索消息的同一个 poll() 方法是否也以配置的时间间隔处理提交?

如果我在单线程应用程序中从 poll 检索消息,则在 SAME 线程中处理消息以完成(包括处理错误),这意味着 poll() 在我的处理完成之前不会再次被调用,那么我假设在那里不怕丢失消息,对吗?这仅在 poll() 在随后的调用中尝试提交时才有效(当然,如果 auto.commit.interval.ms 已通过)。如果在收到消息后立即提交(在我的应用程序处理消息之前),这对我们不起作用......

这很重要,因为我想确定如果我们使用自动提交策略,我们不会丢失消息。重复消息对我们来说是可以容忍的,我们只是无法容忍丢失的数据。

感谢您的澄清!

【问题讨论】:

    标签: apache-kafka kafka-consumer-api confluent-platform


    【解决方案1】:

    检索消息的 poll() 方法是否也以配置的时间间隔处理提交?

    是的。 (如果enable.auto.commit=true。)

    如果我在单线程应用程序中从 poll 检索消息,则在 SAME 线程中处理消息以完成(包括处理错误),这意味着 poll() 在我的处理完成之前不会再次被调用,那么我假设在那里不怕丢失消息,对吗?

    是的。

    这仅在 poll() 在后续调用中尝试提交时才有效(当然,如果 auto.commit.interval.ms 已通过)

    这正是它的完成方式。

    更多详情请看这里:http://docs.confluent.io/current/clients/consumer.html

    【讨论】:

      猜你喜欢
      • 2018-09-22
      • 2021-01-15
      • 1970-01-01
      • 2017-07-09
      • 2014-08-08
      • 2019-08-16
      • 1970-01-01
      • 1970-01-01
      • 2021-03-05
      相关资源
      最近更新 更多