假设自动提交间隔时间为 30 秒,消费者由于某种原因无法处理消息并保留消息超过 30 秒然后崩溃。自动提交偏移量机制是否会在消费者崩溃之前提交此偏移量?
如果我的假设是正确的,消息会因其偏移量提交而丢失,但消息本身尚未被处理?
让我们假设您的消费者组名称是 Test,并且您在该消费者组中有一个消费者。
启用自动提交后,仅在 poll() 调用期间和消费者关闭期间提交偏移量。
例如,auto.commit.interval.ms 为 5 秒,每次调用 poll() 需要 7 秒。每次调用 poll() 时,它都会检查自动提交间隔是否已过,如果已过,如上面的示例所示,它将提交偏移量。
在关闭消费者期间也会提交抵消。
从文档中 -
“关闭使用者,等待默认超时 30 秒以进行任何所需的清理。如果启用自动提交,则如果可能的话,这将在默认超时内提交当前偏移量”。
你可以在这里读更多关于它的内容 -
https://kafka.apache.org/10/javadoc/index.html?org/apache/kafka/clients/consumer/KafkaConsumer.html https://kafka.apache.org/10/javadoc/index.html?org/apache/kafka/clients/consumer/KafkaConsumer.html
现在,回到你的问题,如果 poll() 没有再次调用或者消费者没有关闭,它不会提交偏移量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)