消息队列规划开发Skill
适用场景
引入或治理消息队列:选型、Topic/队列划分、生产消费规范、幂等与重试死信策略、积压与安全防护。
执行步骤
- 选型:高吞吐日志/流式数据→Kafka;业务消息/事务消息/延迟消息→RocketMQ;灵活路由/低延迟任务→RabbitMQ;按团队运维能力与场景匹配,不贪大求全。
- Topic 与队列设计:按业务域划分 Topic,禁止一个 Topic 混多业务;分区/队列数量与消费并发匹配;消息体统一封装(消息ID/业务类型/时间戳/业务数据),格式版本化。
- 生产端规范:消息 key 保证同 key 有序(需验证具体实现);同步/异步发送按可靠性要求选择;事务消息/半消息用于本地事务与消息一致性场景。
- 消费幂等:消费侧唯一键(业务单据号/消息ID)去重表或状态机判定;重复消费必须安全。
- 重试与死信:消费失败重试(次数有限+退避),重试耗尽进入死信队列并告警;死信人工处理流程明确。
- 可靠性:确认机制、持久化、主从/多副本;消息丢失与重复的边界在文档中写明。
- 安全与治理:开启认证与 ACL,敏感字段加密或脱敏;积压监控告警,积压处置预案(扩容消费者/降级非核心消费)。
规范要点
- 消费端必须幂等,所有消费逻辑按「可能重复」设计。
- 禁止在消费者中做无界同步阻塞(长 IO/远程调用),耗时任务转异步线程池或独立流程。
- 消息体禁止携带敏感明文;消息不可篡改场景需签名或走内网加密通道。
- 死信必须可观测、可告警、有人处理,禁止静默丢弃。
- Topic/队列变更走版本化与兼容评估,禁止直接改线上消费者契约。
输出模板
## MQ 规划方案
选型结论:MQ/版本/部署拓扑/理由
Topic 清单:名称/业务域/分区数/消息格式版本
生产消费规范:发送方式/确认机制/并发配置
幂等与重试:去重方案 + 重试次数/退避 + 死信处理流程
监控告警:积压阈值/消费延迟/失败率
自检清单
- 选型与业务场景、运维能力匹配
- Topic 按业务域划分,消息格式版本化
- 消费幂等已设计,重复消费安全
- 重试与死信闭环,死信有告警和处理人
- 认证/敏感加密/积压监控到位