我有一个Python应用程序的autocommit=True,它使用poll()以1秒的间隔获取消息。我正在阅读文档,它提到轮询在后台线程中读取消息,并将它们排队,以便主线程随后可以接收它们。我有点困惑,如果我有多个消息queued,我的消费者崩溃了会发生什么。那些从后台线程排队的消息是否已经被提交,因此丢失了?
poll()
queued
bf1o4zei1#
如文档中所述,每隔auto.commit.interval.ms,将提交任何轮询偏移。如果你担心丢失数据,你应该在任何Kafka客户端中禁用自动提交,并在你知道你已经处理了那些记录之后自己处理提交。
auto.commit.interval.ms
1条答案
按热度按时间bf1o4zei1#
如文档中所述,每隔
auto.commit.interval.ms
,将提交任何轮询偏移。如果你担心丢失数据,你应该在任何Kafka客户端中禁用自动提交,并在你知道你已经处理了那些记录之后自己处理提交。