我们用的是Kafka0.10。。。当enable.auto.commit为true时,我在网上(和文档中)看到一些关于如何在kafka中管理偏移的相互矛盾的信息。检索消息的poll()方法是否也按配置的间隔处理提交?
如果我在一个单线程应用程序中从poll检索消息,在同一个线程中将消息处理到完成(包括处理错误),这意味着在处理完成之前poll()不会再次被调用,那么我认为丢失消息没有什么可怕的,对吧?这仅在poll()在后续调用中尝试提交时有效(当然,如果auto.commit.interval.ms已通过)。如果提交是在收到消息后立即完成的(在我的应用程序处理消息之前),这将不适用于我们。。。。
这一点很重要,因为我想确定,如果使用自动提交策略,我们不会丢失消息。重复的消息对我们来说是可以容忍的,我们只是不能容忍丢失的数据。
感谢您的澄清!
1条答案
按热度按时间cnh2zyt31#
检索消息的poll()方法是否也按配置的间隔处理提交?
是的(如果
enable.auto.commit=true
.)如果我在一个单线程应用程序中从poll检索消息,在同一个线程中将消息处理到完成(包括处理错误),这意味着在处理完成之前poll()不会再次被调用,那么我认为丢失消息没有什么可怕的,对吧?
对。
这仅在poll()在后续调用中尝试提交时有效(当然,如果auto.commit.interval.ms已通过)
就是这样做的。
更多详情请参见此处:http://docs.confluent.io/current/clients/consumer.html