0
在CQRS中,如何確保命令處理程序正在更新寫入存儲和事務性讀取存儲?在CQRS中如何使用NServiceBus更新命令和查詢存儲
我不確定這兩個步驟是否支持交易? 或者您是否依賴最終的一致性?讀取存儲的含義將最終更新?
什麼是(或一個)使用NServiceBus 5或6做到這一點的常見方法?
在我們的應用程序中,我們有IRepository<T>
(Add,Update)用於命令端更新Sql Server數據庫。 查詢方很簡單。實體框架DbContext
之上的數據庫和外觀。
在命令側的步驟是:
- MVC控制器從查看接收數據
- 控制器動作創建一個命令/消息對象,並將其發送到總線。
- 正確的命令處理程序創建適當的域對象並對其進行驗證。
- 如果有效,使用IRepository來插入或更新數據庫。
- 現在呢?
這是否必須是NServiceBus中的佐賀,其中第1步和第2步更新命令存儲和讀取存儲?
謝謝。
但如果出現問題怎麼辦,例如讀取的存儲無法更新,或命令存儲無法更新。這兩種操作不應該在某種交易中嗎?謝謝你的幫助。 – John
這就是爲什麼它被稱爲最終一致性。如果在更新讀取數據的事件處理程序中出現問題,您可以隨時標記它出錯並重試執行。 (因爲你有非常精細的事件處理程序,所以你不需要做2次) –
好的。因此,「標誌」意味着我將引發將在MVC應用程序中處理的另一個事件(例如SyncFailedEvent),例如通知用戶該錯誤?這也通過NServiceBus? – John