這個案例的核心責任是揭露 Pub/Sub client lib 「ack deadline 是 batch-level」這個真實的工程陷阱。

觀察

Merpay 支付流水帳服務用 Pub/Sub 做 async messaging、靠 nack 控制處理順序;踩到「ack deadline 是整批 batch 而非單訊息」、acked 訊息會跟同 batch 其他 expired/nacked 訊息一起 redeliver 的設計細節。

判讀

「ack deadline 是 batch-level」是 Pub/Sub client lib 真實的工程陷阱;idempotency 是處理 duplicate 的必要設計、新出的 exactly-once delivery 才有機會降低重複量。揭露 client lib 的批次語意會「污染」單訊息 ack。

對應大綱

Pub/Sub 進階主題:Ack deadline / Push vs Pull / Ordering key(exactly-once / ordering 章節)。

下一步路由

Pub/Sub vendor 頁3.C9 反例:語義誤配

引用源