重复回调,如何避免重复处理
以业务唯一标识和持久状态约束结果,而不是仅依赖按钮不可重复点击。

先明确唯一业务事实
同一订单的付款成功是一次业务事实,可能通过多次网络通知到达。系统需要区分通知次数和业务次数。
约束与事务一起使用
以稳定的业务标识建立唯一约束,在事务中验证状态并写入结果。只使用内存锁无法覆盖进程重启与多实例。
外部结果未知时不要猜
请求超时可能已经被对方受理。记录处理中状态并通过查询或重试恢复,不应立即再次创建一个独立操作。
测试不止一次成功
重复、乱序、处理中重启和部分写入失败都应进入测试清单。检查的不仅是状态文本,还包括实际业务记录是否重复。

