# 非同步與佇列設計 (Async Queue Design) 知識合約指南 ## 概述 `async-queue-design` 是知識合約,用來設計非同步工作流程、佇列主題、生產者、消費者、重試策略、DLQ、排序保證與逾時行為。供 `design-architecture` 在設計非同步模型時參考。 ## 核心原則 非同步處理必須有 PRD 需求支撐。不要因為非同步「比較好」或「更有擴展性」就採用。每個非同步決策必須可追溯到特定 PRD 功能需求或 NFR。 ## 設計重點 - **何時用非同步**:長時運行操作、PRD 要求非同步、多個消費者需反應同一事件、吞吐量需求超過同步處理能力 - **佇列/主題設計**:Topic vs Queue 的選擇、訊息結構、排序保證、持久性保證 - **重試策略**:最大重試次數、退避策略(Fixed、Exponential、Exponential with Jitter)、重試預算 - **DLQ 策略**:何時路由到 DLQ、DLQ 訊息保留、監控與警報 - **逾時與取消**:處理逾時的定義、取消訊號機制 ## 知識合約職責 - 提供非同步設計的理論指引 - 不直接產生非同步流程規格(由 `design-architecture` 的 Async / Queue Design 章節負責) ## 不應做的事 - 不替系統選擇特定訊息代理 - 不定義具體的佇列名稱或主題名稱 - 不產生實作程式碼