🎯 什麼情境該想到我
當你「希望端點的收訊 / 送訊能納入交易,和本地資料更新一起提交或一起回滾,避免處理到一半失敗造成不一致」的時候。
⚙️ 怎麼用(步驟 / 公式)
意圖:讓訊息端點以交易方式與訊息系統互動,收送訊息的動作可與其他工作一同提交或回滾。
做法 / 結構要點:
- 在交易中接收訊息:處理失敗時回滾,訊息會退回通道可重試。
- 在交易中送出訊息:交易未提交前訊息不真正發出。
- 可搭配分散式交易,讓訊息操作與資料庫操作原子化。
🧪 我實際套用的紀錄
- (待填)
⚠️ 注意 / 什麼時候不適用
- 分散式 / XA 交易有效能與複雜度成本。
- 交易範圍要拿捏,過大會拖長鎖定、降低吞吐。
- 訊息回滾重送會造成重複,需搭配冪等接收者。
🔗 相關工具
- 冪等接收者 Idempotent Receiver(同家族,處理回滾重送造成的重複)
- 輪詢式消費者 Polling Consumer(同家族,常在交易中拉取訊息)
- 企業整合模式