Apache Kafka 消费组与投递语义:有序性、幂等与事务

有序性与分区

  • Kafka 按分区保证顺序;为需要顺序的键选择一致的分区键
  • 跨分区不保证全局顺序,使用聚合层或业务补偿

幂等生产配置


acks=all
enable.idempotence=true
max.in.flight.requests.per.connection=1
retries=INT_MAX

事务性生产与消费


transactional.id=app-tx-001
  • 生产者:初始化事务、开始事务、发送消息、将消费位点写入事务、提交事务
  • 消费者:启用读事务性消息并关闭自动提交

Java 示例(伪代码)


producer.initTransactions();
producer.beginTransaction();
producer.send(record);
producer.sendOffsetsToTransaction(offsets, groupId);
producer.commitTransaction();

消费者要点


enable.auto.commit=false
max.poll.interval.ms=300000
session.timeout.ms=10000
  • 批量处理后按分区同步提交位点,避免重复或遗漏

重试与回退

  • 幂等+事务可实现端到端至少一次与有效的去重
  • 失败路由至死信队列,保留审计与重放能力

总结

通过分区建模、幂等与事务组合,Kafka 能在高并发场景下提供稳定的顺序与可控的一致性。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部