首页/数据/数据工程与 ETL 速查/消费位点提交方式
Kafka64 条

消费位点提交方式

位移提交决定“重启后从哪里继续”:同步提交可靠但阻塞、异步提交吞吐好但需处理失败回调;提交时机决定重复与丢失边界。

commitSync阻塞等待提交结果,简单可靠
commitAsync异步提交,失败回调可重试
语义先处理再提交=可能重复;先提交再处理=可能丢失

处理完成后同步提交(Java)

处理完成后同步提交(Java)
while (true) {
    ConsumerRecords<String, String> records = consumer.poll(Duration.ofSeconds(1));
    for (ConsumerRecord<String, String> r : records) {
        process(r);
    }
    consumer.commitSync();
}
多数管道选择“先处理后提交 + 下游幂等”,用少量重复换取不丢数据。

易错点

  • 批处理中间逐条提交会放大 broker 压力与延迟,按批提交更常用
  • 自动提交与手动提交同时开启时行为混乱,明确只用一种

数据来源与参考

  • Apache Kafka 官方文档:Consumer Configs 与 Offset Commit 语义
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌