04 · BUSINESS BACKENDP114 MIN
Async Job、Queue 与 Cron
把慢、可延后或需重试的工作移出请求,同时保持可追踪与可恢复。
MENTAL MODELBACKGROUND WORK
01API Commit
→02Outbox
→03Queue
→04Worker
→05Result / Retry
先把概念与边界说清楚
定义告诉你它是什么,边界告诉你它不负责什么;企业系统最常见的误解通常发生在两者混用时。
Async Job
不要求在当前请求内完成的工作单元,例如生成 PDF、同步物流、发送邮件。
Queue
在生产者与消费者之间缓冲任务,支持确认、重试、延迟和并发控制。
Cron Job
按时间计划触发的周期任务,例如过期报价和每日对账。
确认订单要等 12 秒
请求同步生成 PDF、发邮件并调用三个外部系统,任一步超时都让用户重试。
- 01
事务只确认订单并写 outbox。
- 02
Worker 分别处理文档、通知和集成。
- 03
界面显示同步状态与可重试失败。
API 快速稳定返回,外部故障不再制造重复订单。
马上动手
- 把订单确认工作分为同步与异步。
- 为 Worker 定义 job id 和幂等策略。
常见坑
- 把完整对象快照无限塞进队列
- 失败消息无限重试
- Cron 与普通 Worker 共同重复处理
05 · KNOWLEDGE CHECK为什么 Queue 消费者通常必须幂等?查看答案⌄
答案
Worker 可能执行完成但确认消息失败,队列会再次投递;消费者必须识别同一 job 已产生的结果。