"Domain-Event"
- domain event 與狀態流
為了讓某個畫面刷新而補發事件、或監聽端掛著全事件過濾器時使用。事件記錄離散事實、狀態流發布連續觀測——判準是消費者問「發生了什麼」還是「現在是什麼」;載體借用的代價是涵蓋面靠枚舉維持。
- domain event 與命令、查詢的分界
事件類別以動詞開頭、或事件成對出現 Requested/Provided 帶 correlation id 時使用。事件只承載已發生的事實——命令有唯一處理者與成敗、查詢是一問一答的對話;把意圖或對話裝進事件通道、責任結構會跟著錯位。
- Domain Event
系統裡出現「為了讓某頁刷新而補發事件」或「監聽端掛全事件過濾器」時使用。domain event 是已發生的業務事實——過去式命名、發布後不可變、錯過代表事實遺失。
- Bounded Context
同一套架構判準跨到另一個服務還站不站得住?bounded context 是模型與詞彙保持一致的邊界——邊界內的推導在邊界外不必然成立。
- EventBus
行程內要把「發生了一件事」廣播給多個訂閱者、或懷疑它被拿去兼職變更通知管道時回來讀。EventBus 是行程內的發布/訂閱事件匯流排——把事件的發布點與訂閱點解耦。
- Event-Carried State Transfer
跨服務的 domain event payload 開始塞進足量當前狀態、要判斷這是正當設計還是載體誤用時使用。event-carried state transfer 是刻意讓事件攜帶足量狀態、讓下游服務不必回頭查詢來源的設計。
- BookImported 不能寫成 ImportBook — 事件命名的過去式是語意類別、不是風格
domain event 用過去式命名(BookImported)因為事件是已發生的事實;動詞開頭(ImportBook)是命令的形狀、訂閱者會誤讀成指令。字尾清單的自動檢查抓不住不規則動詞——偵測可機械化、判定要看語意。附一次版本終止:工作日誌宣稱的命名問題實際早已不存在、執行前驗前提省下整輪流程。
- 用事件做同步查詢、等於手工重建 RPC — 跨 domain 解耦的完整帳單
domain 直接查另一個 domain 的 repository 違反依賴方向;改事件驅動的 request/response 解了耦、但帳單具體:correlation id 配對並發、timeout 機制、三條錯誤路徑——都是同步呼叫免費附贈的東西。判準是需要解耦「依賴方向」還是「時間與部署」:前者用消費端 Port 就夠、後者才值得付事件的價。