时序图:异步消息与回调

时序图:异步消息与回调

puml.online

简介 / Introduction

时序图(Sequence Diagram)用于展示对象之间按时间顺序交互的消息流。同步消息(sync)等待对方返回,而异步消息(async)发送后不阻塞,常用于 HTTP 请求、事件驱动架构和微服务调用场景。本文用同一业务场景,对比 PlantUML 与 Mermaid 两种引擎的语法差异。

PlantUML 版

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@startuml
skinparam backgroundColor #FEFEFE
skinparam handwritten false

participant "客户端" as Client
participant "服务A" as SvcA
participant "服务B" as SvcB

Client -> SvcA : 发起请求 (sync)
activate SvcA
SvcA -> SvcB : 发送事件 (async)
activate SvcB
SvcB --> SvcA : 回调通知 (callback)
deactivate SvcB
SvcA --> Client : 响应 (sync)
deactivate SvcA

note over Client, SvcB
异步消息不阻塞发送方
回调通过虚线箭头表示
end note
@enduml

PlantUML 使用 -> 表示同步消息,--> 表示返回(虚线),通过 activate/deactivate 控制参与者的生命线。异步消息只需将实线箭头改为普通 ->,无需特殊关键字。回调用虚线回执箭头 --> 明确表达。

Mermaid 版

1
2
3
4
5
6
7
8
9
sequenceDiagram
participant Client
participant SvcA
participant SvcB

Client->>+SvcA: 发起请求 (sync)
SvcA->>+SvcB: 发送事件 (async)
SvcB-->>-SvcA: 回调通知 (callback)
SvcA-->>-Client: 响应 (sync)

Mermaid 语法更紧凑:箭头 ->>+ 表示进入激活状态,-->>- 表示离开激活状态并返回。异步消息即普通实线箭头 ->(无 +/- 标记则不改变激活栈)。回调用虚线箭头 -->> 表达,无需额外关键字。

对比 / Side-by-side

特性 PlantUML Mermaid
同步消息 -> ->>+(激活入口)
异步消息 ->(无特殊标记) ->
返回消息 --> -->>-
激活/销毁 activate / deactivate 箭头末的 + / -
回调表示 -->(虚线回执) -->>(虚线返回)
注释方式 note over %% 行注释

小结 / Wrap-up

两种引擎均可清晰表达异步与回调语义。PlantUML 语法更冗长但表达能力更强,适合复杂交互;Mermaid 简洁,适合文档嵌入与快速原型。选择时可依据交互复杂度与团队工具链习惯决定。

  • 标题: 时序图:异步消息与回调
  • 作者: puml.online
  • 创建于 : 2026-08-28 09:00:00
  • 更新于 : 2026-08-28 01:01:15
  • 链接: https://puml.online/blog/sequence-diagram-async-messages/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。