概述延迟与定时任务常用于订单超时、通知发送等场景。本文提供队列与存储协同的实现策略,并以重试/死信、去重/幂等与调度精度治理可靠性。实现策略(已验证)队列原语:使用 MQ 延迟主题或 TTL+死信转发;存储扫描:对需要高可靠与可回溯的任务,使用数据库存储+时间索引,定期扫描触发;事务一致性:业务写+任务创建同事务(或 Outbox)。重试与死信指数退避重试(上限如 5 次);超过上限转入死信队列,人工或自动处理;去重与幂等使用任务 `idempotencyKey` 与状态表去重;任务执行幂等设计,重复触发不产生副作用。调度精度与性能精度层次:秒级(MQ)、分钟级(扫描);批量拉取与分页执行,避免抖动;示例(伪配置)delayTopic: order-expire retry: attempts=5, backoff=exp(100ms) dlq: order-expire-dlq store: tasks(ts,index), scan every 1m 验证与监控指标:触发成功率、重试次数、死信比率、延迟分布;演练:模拟失败与峰值,验证重试与死信处理;常见误区业务写与任务创建非同事务导致任务丢失;无去重/幂等造成重复执行;过高精度扫描造成数据库压力。结语以队列延迟与存储扫描结合、重试与死信治理,配合幂等与一致性设计,延迟与定时任务可在复杂场景中保持可靠与可追踪。

发表评论 取消回复