适用场景
给团队讲「为什么要用消息队列」、写架构方案里的异步链路、准备后端面试时使用。图上能看到三件事:用户不用等下游处理完就拿到结果;两个消费者互不影响;失败会重试,超过次数进入死信队列等人工处理。
怎么改成你的
- 把订单、库存、通知换成你的业务,例如注册后发邮件、上传后转码。
- 需要说明幂等的,在消费者处理前加一条「判断消息是否已处理」。
- 要保证「保存订单」和「发消息」同时成功,可以加一个本地消息表的参与者。
Mermaid 代码
message-queue-sequence.mmd
sequenceDiagram
actor U as 用户
participant O as 订单服务
participant Q as 消息队列
participant S as 库存服务
participant N as 通知服务
U->>O: 提交订单
O->>O: 保存订单
O->>Q: 发布订单已创建
O-->>U: 立即返回下单成功
par 库存消费
Q->>S: 投递消息
S->>S: 扣减库存
S-->>Q: 确认
and 通知消费
Q->>N: 投递消息
N->>N: 发送短信与站内信
N-->>Q: 确认
end
opt 消费失败
S-->>Q: 未确认
Q->>S: 按间隔重试
Q->>Q: 超过次数进入死信队列
end让 AI 按这个结构生成一份
把下面这段发给豆包、DeepSeek、Kimi 或元宝,再把它的回复整段粘贴到编辑器,会自动识别其中的代码。
prompt.txt
请用 Mermaid 的 sequenceDiagram 语法画一张消息队列异步处理时序图:参与者有用户、订单服务、消息队列、库存服务、通知服务;用户提交订单,订单服务保存订单后向队列发布订单已创建,并立即返回下单成功;用 par 表示库存服务和通知服务并行消费并确认;再用 opt 表示消费失败时未确认、按间隔重试、超过次数进入死信队列。只输出 mermaid 代码块。
常见问题
- par 是什么意思?
par表示并行,and分隔并行的各段,end结束。图上会画成一个框,里面的几段同时发生。- 消息丢了或重复了怎么办?
通常靠发送确认、消费确认和幂等处理三者配合。图里画了确认与重试,幂等可以按上面的提示加一条消息。
- 消息的顺序能保证吗?
取决于队列的类型和配置。需要严格顺序时用同一个分区键或顺序队列,并在图上注明;多数通知类场景不要求顺序。
同类模板
更新于 2026-11-11