当应用在数据库事务提交前就发布Kafka消息时,一旦事务失败回滚,消息已送出但数据未落库。消费者收到消息后尝试处理不存在的批次,依赖重试机制可能导致问题长期不被察觉。 这种bug在本地测试中几乎不会暴露。开发者通常在同一事务内模拟成功路径,很难构造出“消息发出而事务回滚”的精确时序……

阅读全文