BullMQ 是基于 Redis 的 Node.js 任务队列。判断是否合适,应从可以在 HTTP 响应之后完成、且需要跟踪或重试的工作入手。
例如生成大型报表。如果在请求内生成,用户可能一直等到超时。队列允许应用先接受工作、返回任务 ID,再单独处理。
1. 看清进入队列后改变了什么
[User] -> [API: submit job] -> [Redis / BullMQ] -> [Worker]
| |
[Return job ID] [Saved report]
生产者提交任务,worker 执行。用户查询进度,准备好后下载保存的报表。
报表仍需处理时间。改善的是任务生命周期不再依赖一个持续打开的 HTTP 请求,而且 worker 可以与 API 服务器分开管理。
