已采纳
回答正文
回复
讨论正文
该问题的正文与回答。
【背景】
我们用 Kafka 3.5(3 broker)消费一条库存扣减链路:topic stock-deduct 16 分区,消费组 8 实例,max.poll.records=500。消费逻辑是「读 batch → 逐条扣减 MySQL → 提交 offset」,单条平均耗时约 30ms,一批 500 条约 15s 处理完,平时 lag 基本在 0~50。
【现象 / 卡点】 问题出在「一批里只有某一条失败」:比如第 321 条命中幂等冲突(同一 out_biz_no 重复投递)或外键约束失败抛异常。此时我陷入两难:
【已尝试的排查与结果】
【期望得到的答案形态】 想请教:在「至少一次投递 + 业务幂等」的语义下,batch 内部分失败时,业界比较稳的工程做法到底是哪种?