dev.to | 📄 原文链接 | 2026-11-07 收录

事务邮件在生产里翻车的九种方式:从收据丢失到重复发送

来源:dev.to — 2026-11-06

📋 概述

下单成功但收据没到,用户点「重发」收到两封,密码重置邮件在链接过期二十分钟后才送到——一次成功的测试邮件完全说明不了集成在故障下会怎样。作者列出九个只在生产暴露的错误:把 API 返回成功当成投递成功(接受、投递、进收件箱、被阅读是四个不同阶段);在 HTTP 请求里同步发信,让服务商延迟拖垮结账;超时重试却不带幂等键,用户收到两张收据。修法是应用侧投递记录、事务内写 outbox、唯一约束加可恢复的租约、以及跨重试保持不变的幂等键。

🔑 核心要点

💡 金句

“A timeout means your application does not know the outcome. It does not prove that the provider rejected the message.”
译:超时意味着你的应用不知道结果,它并不能证明服务商拒收了这封邮件。
← 返回 dev.to 首页