消息队列在生成平台中用于解耦和弹性调度长耗时任务(如批量生成、图像处理、异步外部调用)。本文比较常见队列方案并提供工程实践。
常见队列方案
- RabbitMQ:适合复杂路由与确认语义的场景,支持多种交换机类型。
- Kafka:适合高吞吐、事件流场景,常用于事件溯源与日志型数据。
- BullMQ / Redis Streams:适合 Node.js 场景的轻量队列,支持延迟与重试。
设计原则
- 幂等性:消费者必须设计为幂等以应对重试或重复投递。
- 可监控性:暴露队列深度、处理延迟、失败率等指标,便于自动告警与伸缩决策。
- 重试与死信队列:对可恢复和不可恢复错误分别处理,失败次数超过阈值时进入死信队列以便人工审查。
实践建议
- 将长任务拆分为更小的子任务,允许并行处理与更精细的重试策略。
- 使用优先级队列区分交互型短任务与后台批处理,避免长任务阻塞关键路径。
相关链接: