PlantUML シーケンス図: 非同期メッセージキュー
PlantUMLで非同期メッセージングパターンを描画。イベント駆動アーキテクチャ、メッセージキュー、Pub/Subシステムをシーケンス図でモデル化。
Sequence Diagrams
詳細な説明
PlantUMLでの非同期メッセージングパターン
モダンなシステムはメッセージキューとイベント駆動パターンを広く使用しています。PlantUMLシーケンス図はこれらの非同期インタラクションを明確にモデル化できます。
基本的な非同期パターン
@startuml
title イベント駆動注文処理
participant "Order API" as API
queue "Message Queue" as MQ
participant "Payment Service" as Pay
participant "Inventory Service" as Inv
participant "Email Service" as Email
API ->> MQ: OrderCreatedイベントを公開
MQ ->> Pay: OrderCreatedを消費
MQ ->> Inv: OrderCreatedを消費
Pay ->> MQ: PaymentProcessedを公開
MQ ->> Email: PaymentProcessedを消費
Email ->> Email: 確認メール送信
@enduml
Queueパーティシパントタイプ
メッセージブローカーにはパーティシパントタイプとしてqueueを使用します。非同期境界がすぐに視覚的にわかる独自のアイコンがレンダリングされます。
一方向矢印
非同期メッセージはファイア・アンド・フォーゲットです。送信者がレスポンスを待たないことを示すために開いた矢印(->>)を使用します。
並列処理
par 決済処理
MQ ->> Pay: OrderCreated
Pay ->> Pay: カード課金
else 在庫確認
MQ ->> Inv: OrderCreated
Inv ->> Inv: 在庫予約
end
parブロックは決済と在庫が同時に行われることを示し、これがイベント駆動アーキテクチャの主要な利点です。
デッドレターキュー
alt 処理成功
Pay ->> MQ: PaymentSuccess
else 処理失敗(3回リトライ後)
Pay ->> MQ: DLQに移動
note right: 手動調査が必要
end
障害パスのモデル化はハッピーパスと同様に重要です。
ユースケース
イベント駆動マイクロサービスアーキテクチャの設計、KafkaやRabbitMQのトピックフローのドキュメント、CQRSやイベントソーシングパターンのチームへの説明、サードパーティメッセージブローカーとのシステム統合の計画。