Processing Semantics
Processing Semantics
Processing semantics 的核心概念是「consumer 處理事件後,業務結果是否正確」。broker 把訊息送到只代表投遞成功,consumer 的副作用是否正確是另一層責任。它回答副作用能否承受重複、亂序與部分失敗。 可先對照 Delivery Semantics。
概念位置
Processing semantics 位在 delivery 與 recovery semantics 之間。投遞語意把訊息交給 consumer,處理語意決定這次處理是否讓系統狀態正確,依賴 idempotency 把重複投遞收斂成一次結果。
可觀察訊號與例子
同樣是 at-least-once 投遞,寄信 consumer 重複會寄出兩封、開 invoice 重複會重複計帳、search index sync 重複則天生冪等。副作用形狀不同,能承受的處理語意就不同。
設計責任
設計時對每個副作用標明能否承受重複、亂序與部分失敗。承受不了的補 idempotency key 或 dedup store,把處理結果穩定在一次。