商户回调地址那晚挂了 40 分钟,通知任务按 1 分钟、5 分钟、15 分钟发了三次都超时,之后不再重发,商户第二天说没收到结果。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,通知策略只配了三次重试,失败后既不落补偿表也不告警。通知结果和业务状态没有关联,系统认为发过就算完成。
「最大努力通知」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。
SELECT notify_no, retry_count, next_retry_at, last_code FROM notify_task WHERE status = 'FAILED' AND retry_count >= 3;
权限不要一口气开到最大,先加到够用再往上试,范围小才好收。
具体做法是,通知记录落表 记下每次响应码和下一次重试时间;重试窗口拉长到 24 小时 间隔按分钟递增;超过窗口仍未成功的转人工 并给商户留主动查询接口;发通知前先查业务终态 终态才发。
最后用这个标准收尾,回调地址恢复后未成功的通知会继续重发 通知表里不再有超过窗口没人处理的记录。
