2

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

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

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

感谢您的澄清!

4

1 回答 1

4

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

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

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

是的。

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

这正是它的完成方式。

有关详细信息,请参见此处:http: //docs.confluent.io/current/clients/consumer.html

于 2017-02-27T05:28:46.960 回答