确定重复可能发生的位置
触发事件可能再次送达,用户可能启动另一轮运行,或者前一次尝试在结果显示前超时。如果工作流会发送消息、创建记录或更新其他服务,第二次运行可能重复这些影响。决定处理方式前,先找出会改变外部状态的步骤。
使用事件关联的稳定业务标识,例如订单或请求编号,在重新创建前查询是否已经处理。除非系统明确保证,否则不要把临时运行标识当作长期业务键。
测试重复和延迟事件
使用同一事件进行受控测试,运行两次并确认第二次不会创建意外副本。还要测试事件延迟到达,以及外部操作成功后、工作流记录结果前发生失败的情况。
记录事件引用和处理结果,便于区分重放与新任务。如果确实出现重复,应停止进一步重试,并先核对外部系统,再手动修正数据。应明确设计恢复流程,不要假设每个触发器只会送达一次。