4.1.2.2 队列与通知机制 4.1.2.2 队列与通知机制:当“通知已发送”不等于“消息已被消费”——一个被90%工程师忽略的队列幂等性陷阱与原子性修复方案 你有没有遇到过这样的场景? 系统A通过消息队列向系统B推送一笔订单状态变更( ),下游服务B收到后调用物流接口,生成运单号并更新本地订单表。一切看似顺利。但某天凌晨三点,运维告警:物流侧重复下单了——同一笔订单,生成了两个完全相同的运单号,且都被快递公司揽收。客户投诉电话打爆客服热线,而日志里只有一行轻描淡写的 。 你翻遍Kafka消费者位点、RocketMQ重试日志、Spring Boot的 异常捕获配置……没发现任何报错。重放消息?不行——再推一次,又会触发第二次发货。回滚数据库?订单状态已是 ,物流单号已物理出库,无法撤回。