任务队列(Queue)
一句话:把耗时的任务放进队列排队异步处理,而不是让用户等着,提高系统响应速度和稳定性。
它是什么
有些操作很耗时(比如发送大量邮件、处理视频、调用慢速的第三方API),如果让用户请求同步等待完成,体验很差还容易超时。任务队列的做法是:接到请求先快速返回"已收到,处理中",把具体任务丢进队列后台慢慢处理,处理完再通知结果。
适合干什么
- 批量发送邮件/短信等耗时操作
- 视频处理、大文件转换等重计算任务
- 需要控制并发量、避免瞬间压垮系统的场景
不适合干什么
- 响应很快的简单操作(几十毫秒能完成的没必要引入队列增加复杂度)
普通人怎么用
理解核心思路:接收请求→快速响应"已受理"→任务放入队列→后台worker慢慢处理→处理完更新状态或通知用户,而不是让用户的请求一直卡着等结果。
进阶用户怎么用
设计队列系统要考虑任务失败重试策略、死信队列(多次失败的任务单独存放人工排查)、以及worker的并发数控制(避免同时处理太多任务压垮下游依赖的服务,如数据库或第三方API)。
常见误区
- 以为引入队列所有任务都会立刻变快,实际队列解决的是"不阻塞用户请求",任务本身处理耗时并没有变短
- 没有处理任务失败的情况,任务处理出错就永久丢失了,没有重试或记录机制
和相似工具的区别
- 和定时任务的区别:队列是有新任务就随时处理(事件驱动),定时任务是按固定时间周期批量处理,触发方式不同
入门步骤
- 识别出哪些操作耗时,适合放进队列异步处理
- 选择合适的队列工具(如Redis、专门的消息队列服务)
- 实现任务处理逻辑,并加上失败重试机制