Dead-Letter Queue
死信队列
死信队列会保存源队列在允许次数内仍处理失败的消息。人员可以先调查失败原因,再进行受控重试。
source queue + receive count > limit -> DLQ + configured monitor -> alert -> inspect/fix -> controlled redriveemail_804✓主队列继续处理email_803!地址格式错误dead/email_803→先检查source queue + receive count > limit -> DLQ + configured monitor -> alert -> inspect/fix -> controlled redriveJOB另一个例子
导入数据 `row-73` 因日期格式错误而失败五次。Amazon SQS 会把消息移到死信队列。团队预先设置的告警接着通知操作人员。解析器修复后,操作人员以安全速度重新投递一小批消息。
主要部分
- 01源队列
- 02尝试次数上限
- 03失败原因
- 04死信消息
- 05告警与负责人
- 06调查、修复与重新投递
什么时候用
同一条消息持续失败,不应该一直回到主队列时,可以使用死信队列。要保存原因、来源、尝试次数、消息时间和安全的重新投递方式。
什么时候不要用
不要因为第一次短暂失败就移走消息,也不要忽略持续变长的死信队列。原因尚未修复前,不可直接重新投递;流程如果要求严格顺序,移走一项也可能破坏顺序。
代码里的名称
source queue + receive count > limit -> DLQ + configured monitor -> alert -> inspect/fix -> controlled redrive 上线前要检查
检查接口约定、任何情况下都不能破坏的规则、授权与输入限制。测试重试、重复执行只生效一次、超时与部分失败。验证数据完整性、兼容性、监控、恢复与回到上一版。
预期结果:为这套系统设计或检查 死信队列 (Dead-Letter Queue),并让数据保持正确、安全且容易维护。 用户场景:导入数据 `row-73` 因日期格式错误而失败五次。Amazon SQS 会把消息移到死信队列。团队预先设置的告警接着通知操作人员。解析器修复后,操作人员以安全速度重新投递一小批消息。 技术概念或控制措施:死信队列 (Dead-Letter Queue)。 适用理由:同一条消息持续失败,不应该一直回到主队列时,可以使用死信队列。要保存原因、来源、尝试次数、消息时间和安全的重新投递方式。 不应使用的情况:不要因为第一次短暂失败就移走消息,也不要忽略持续变长的死信队列。原因尚未修复前,不可直接重新投递;流程如果要求严格顺序,移走一项也可能破坏顺序。 工程要求:定义输入、输出、接口约定,以及任何情况下都不能破坏的规则。说明授权与输入检查范围。定义失败、超时、重试和重复执行只生效一次的规则。也要定义数据迁移与兼容限制。 运营要求:加入监控信号与隐藏敏感数据的日志。设置容量上限并写好操作手册。测试恢复与回到上一版的流程。 验收标准:接口约定与失败路径测试通过。重试或部分失败时,数据与授权规则仍正确。性能上限、监控、恢复与回到上一版的方法都已验证。 证据与限制(证据边界):没有一份官方标准能涵盖全部内容。不同团队、平台或框架的用法可能不同。 待确认:程序运行环境、数据位置、流量形态、数据一致需求和安全边界。也要确认兼容周期、服务目标(SLO)与恢复上一版的限制。
检查这份需求
请 AI 编程助手检查当前如何使用 死信队列 (Dead-Letter Queue)。 定义:死信队列会保存源队列在允许次数内仍处理失败的消息。人员可以先调查失败原因,再进行受控重试。 生产环境检查:检查接口约定、任何情况下都不能破坏的规则、授权与输入限制。测试重试、重复执行只生效一次、超时与部分失败。验证数据完整性、兼容性、监控、恢复与回到上一版。 修改程序前,先列出看到的证据、缺口、严重程度,以及最小且安全的修正。