卡夫卡抵消管理

时间:2017-02-27 03:55:14

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

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

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

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

感谢您的澄清!

1 个答案:

答案 0 :(得分:4)

  

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

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

  

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

  

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

这正是它的完成方式。

详情请见此处:http://docs.confluent.io/current/clients/consumer.html