Message Queue
訊息佇列
訊息佇列會暫存工作或訊息,等到消費者有能力時再處理。生產者和消費者可以在不同時間、用不同速度運作。
另一個例子
結帳會在同一個交易中寫入訂單 984 和寄件匣紀錄,再由中繼程式把「產生收據」送進持久佇列。三個工作程序只有在儲存 PDF 後才確認訊息,短暫的儲存失敗則用延遲退避重試。一直失敗的訊息會連同關聯 ID 送進無法處理訊息佇列。
主要部分
- 01Producer 與訊息
- 02持久佇列與投遞
- 03Consumer 確認與失敗路徑
什麼時候用
需要吸收突發流量、隔離較慢的工作、重試短暫失敗或分配任務時,可以使用佇列。必須明確定義投遞方式。
什麼時候不要用
需要立即回覆時不要加入佇列。若沒有冪等消費者、積壓上限、可觀測性和處理持續失敗訊息的計畫,也不應使用。
程式裡的名稱
durable queue + delivery/ack policy + idempotent consumer + retry/DLQ 上線前要檢查
檢查介面約定、任何情況都不能破壞的規則、授權與輸入限制。測試重試、重複執行只生效一次、逾時與部分失敗。驗證資料完整性、相容性、監控、復原與回復上一版。
預期成果:為這套系統設計或檢查 訊息佇列 (Message Queue),並讓資料保持正確、安全且容易維護。 使用者情境:結帳會在同一個交易中寫入訂單 984 和寄件匣紀錄,再由中繼程式把「產生收據」送進持久佇列。三個工作程序只有在儲存 PDF 後才確認訊息,短暫的儲存失敗則用延遲退避重試。一直失敗的訊息會連同關聯 ID 送進無法處理訊息佇列。 技術概念或控制措施:訊息佇列 (Message Queue)。 適用理由:需要吸收突發流量、隔離較慢的工作、重試短暫失敗或分配任務時,可以使用佇列。必須明確定義投遞方式。 不應使用的情況:需要立即回覆時不要加入佇列。若沒有冪等消費者、積壓上限、可觀測性和處理持續失敗訊息的計畫,也不應使用。 工程要求:定義輸入、輸出、介面約定,以及任何情況都不能破壞的規則。說明授權與輸入檢查範圍。定義失敗、逾時、重試和重複執行只生效一次的規則。也要定義資料搬移與相容限制。 營運要求:加入監控訊號與隱藏敏感資料的記錄。設定容量上限並寫好操作手冊。測試復原與回復上一版的流程。 驗收條件:介面約定與失敗路徑測試通過。重試或部分失敗時,資料與授權規則仍正確。效能上限、監控、復原與回復上一版的方法都已驗證。 證據與限制(證據邊界):沒有一份官方標準能管到全部內容。不同團隊、平台或框架的用法可能不同。 待確認:程式執行環境、資料位置、流量形態、資料一致需求和安全邊界。也要確認相容期間、服務目標(SLO)與回復上一版的限制。
檢查這份需求
請 AI 程式助手檢查目前如何使用 訊息佇列 (Message Queue)。 定義:訊息佇列會暫存工作或訊息,等到消費者有能力時再處理。生產者和消費者可以在不同時間、用不同速度運作。 正式環境檢查:檢查介面約定、任何情況都不能破壞的規則、授權與輸入限制。測試重試、重複執行只生效一次、逾時與部分失敗。驗證資料完整性、相容性、監控、復原與回復上一版。 修改程式前,先列出看到的證據、缺口、嚴重程度,以及最小且安全的修正。