Java 延迟kafka手动提交偏移量会产生什么影响
我们希望手动提交kafka偏移量以控制数据丢失事件。但是我们可能会延迟manaul提交,因为我们只想在持久化到数据源之后才这样做Java 延迟kafka手动提交偏移量会产生什么影响,java,apache-kafka,kafka-consumer-api,Java,Apache Kafka,Kafka Consumer Api,我们希望手动提交kafka偏移量以控制数据丢失事件。但是我们可能会延迟manaul提交,因为我们只想在持久化到数据源之后才这样做 我想了解减慢提交偏移量是如何影响kafka的主题/并行性/分区的。如果您从一个主题消费,如果该消费者属于一个消费者组,kafka将确保一个消费者消费一个分区。因此,如果您手动提交,它将不会影响其他使用者,因为他们从另一个分区进行消费 但如果将同一分区使用者与enable.auto.commit=false和enable.auto.commit=true进行比较,则启用
我想了解减慢提交偏移量是如何影响kafka的主题/并行性/分区的。如果您从一个主题消费,如果该消费者属于一个消费者组,kafka将确保一个消费者消费一个分区。因此,如果您手动提交,它将不会影响其他使用者,因为他们从另一个分区进行消费 但如果将同一分区使用者与
enable.auto.commit=false
和enable.auto.commit=true
进行比较,则启用自动提交的使用者吞吐量相对较高。如果您不需要确认您的提交,那么使用commitSync,它将比commitSync提高吞吐量
通常,在完成批处理中的所有消息时调用API,并且在提交批处理中的最后一个偏移量之前不轮询新消息。这种方法会影响吞吐量和延迟,轮询时返回的消息数也会影响吞吐量和延迟,因此可以将应用程序设置为不太频繁地提交
但是,如果手动提交,当使用者重新启动或重新平衡时,可能会出现重复的已使用消息。当您使用消息并写入数据库时,之后您将向Kafka提交消息。如果此时使用者重新平衡或重新启动,则该消息将不会提交,并将被同一组中的另一使用者重新使用
有关更多信息,请参阅