kafka中maxPollRecords和autoCommitEnable之间的关系

时间:2018-06-03 21:03:39

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

有人可以给我一些很好的例子和卡夫卡中的kafka params maxPollRecords和autoCommitEnable之间的关系。

1 个答案:

答案 0 :(得分:1)

他们之间没有任何关系。让我向你解释两个配置。

在Kafka中,消费者可以通过两种方式提交抵消 -

1.Manual Offset Commit - 承诺抵消的责任在于开发人员。

2.启用自动提交 - 这是Kafka消费者负责为您提供抵消的地方。它是如何工作的,在你对消费者进行的每次poll()调用中,检查是否是时候提交偏移量(这是由auto.commit.interval.ms配置决定的),如果是时间,它提交抵消。

例如 - 假设auto.commit.interval.ms设置为7秒,每次调用poll()需要8秒。因此,在对poll()的特定调用中,它将检查,如果提交偏移的时间已经过去,在此示例中将具有,那么它将提交从先前轮询获取的偏移量。

在消费者关闭期间也会提交抵消。

以下是您可以查看的一些链接 -

https://kafka.apache.org/documentation/#consumerconfigs

https://kafka.apache.org/11/javadoc/org/apache/kafka/clients/consumer/KafkaConsumer.html

Does kafka lose message if consumer holds message longer then auto commit interval time?

现在,进入Max.poll.records。通过这种配置,您可以告诉kafka消费者,您希望它在一次调用poll()时返回的最大记录数是多少。请注意,您通常不会更改此默认值,除非您的记录处理速度很慢,并且您希望确保您的消费者不会被视为死亡,因为处理过多记录的速度很慢。