我们正在使用Kafka 0.10 ...我在网上(以及文档中)看到一些有关如何在enable.auto.commit为TRUE时在kafka中管理偏移的相互矛盾的信息。检索消息的相同poll()方法是否也以配置的间隔处理提交?
如果我在单线程应用程序中从poll中检索消息,则在SAME线程中处理消息以完成(包括处理错误),这意味着在我的处理完成之后不会再次调用poll(),然后我在那里假设不要害怕丢失消息,对吗?这仅在poll()在后续调用时尝试提交时才有效(当然,如果auto.commit.interval.ms已通过)。如果在收到消息后立即完成提交(在我的应用程序处理消息之前),这对我们不起作用....
这很重要,因为我想确定如果我们使用自动提交策略,我们就不会丢失消息。我们可以容忍重复的消息,我们不能容忍丢失的数据。
感谢您的澄清!
答案 0 :(得分:4)
检索消息的相同poll()方法是否也按配置的时间间隔处理提交?
是。 (如果enable.auto.commit=true
。)
如果我在单线程应用程序中从poll中检索消息,则在SAME线程中处理消息以完成(包括处理错误),这意味着在我的处理完成之后不会再次调用poll(),然后我在那里假设是不是害怕失去信息,对吗?
是
这仅在poll()在后续调用时尝试提交时才有效(当然,如果auto.commit.interval.ms已通过)
这正是它的完成方式。
详情请见此处:http://docs.confluent.io/current/clients/consumer.html