我們正在考慮在工作中實施CQRS模式,並且有幾個關於驗證的問題。事件驗證
比方說,我們有3個總根源:
User
Business
UserToBusinessRelationship
當用戶註冊發送的事件是:
UserCreated
BusinessCreated
UserAddedToBusiness
需要驗證事件,例如創建用戶和企業之間的鏈接應創建用戶和企業。
我看到兩種方法。
預先驗證:使用上次處理的快照加上未處理的事件即時構建讀取模型並將其用於驗證。
處理時驗證:接受事件/命令,並在處理事件時進行驗證。
第一種方法有即時反饋,但它需要創建一個最終讀取模型來驗證。其次更簡單,但不向消費者反饋出現問題。
我在想這樣的事情:當你發出一個事件時,你會找回一個你稍後可以用來查詢事件狀態的id。如果事件處理成功,你會得到'OK',否則你會得到一個錯誤,告訴出了錯誤。
這是一個有效的方法或矯枉過正?消費者如何知道事件已經被處理並且數據已準備好被使用?
你是什麼意思的「事件驗證」?在CQRS中,只有命令被驗證;在他們被接受並且事件產生之後,這些事件必須被接受,它們被認爲是非常有效的,它們代表已經發生的事實。 –
也許回答你的問題在這裏:http://danielwhittaker.me/2014/11/22/4-secrets-inter-aggregate-communication-event-sourced-system/ –