Kafka Consumer:使用自动提交的优缺点

Kafka Consumer: Pros and cons of using auto commit

我正在构建一个消费者,我想确保来自 Kafka 主题的每条消息都被相应地读取和处理。虽然自动提交功能很吸引人,但我希望完全控制偏移量——也就是说,我只想在处理顺利的情况下提交偏移量。

但是,我不确定将自动提交设置为 false 的缺点。关闭自动提交的优点和缺点是什么?它会执行得更慢吗?具有相同消费者名称的多个消费者是否会对此实现有问题?

性能实际上取决于您如何实现它 - 您可以同步或异步提交偏移量,对提交偏移量这一事实的确定程度有不同的保证。通常当您不手动提交偏移量时,您可以对其进行更多控制 - 随心所欲。但是有一些注意事项,例如,commitSynccommitAsync 是通过轮询获得的提交偏移量,因此如果您在处理循环的中间提交,并且应用程序崩溃,那么您将丢失数据.

"Kafka. The Definitive Guide" 有很多关于提交和偏移量的部分 - 我建议阅读它 - Confluent 分发 PDF of the book for free.