2012-03-20 20 views
0

進入CQRS,我知道你有命令(應用層)和事件(來自域)。CQRS/EventStore:如何處理傳遞事件失敗?

在事件要更新讀取模型的簡單情況下,請閱讀模型更新失敗嗎?如果沒有「bug」,那麼我看不到它們失敗,並且當我使用EventStore時,我知道有一個提交標誌會重試失敗。

所以我的問題是除了EventStore來處理故障之外,我還必須做些什麼嗎?

來自一個世界,你在一個交易中做所有事情,現在事情分開完成令我擔心。

回答

1

當然,有些情況下發布的事件在讀取的模型中會失敗。

你必須確保你可以檢測到並解決它。

好的是你可以一遍又一遍地重放所有的事件,所以你有機會不僅修復錯誤。如果需要,您還可以通過重播每一個事件來測試修補程序。

我使用NServiceBus作爲我的發佈機制,它允許我使用錯誤隊列。使用我的其他日誌記錄工具和錯誤隊列,我可以很容易地確定發生了什麼,因爲我有錯誤日誌和導致錯誤的實際消息。

+0

我的閱讀模型和我的活動商店在同一臺機器上。使用NServiceBus會是一個矯枉過正的行爲,還是我現在應該爲此計劃?另外,除非應用程序中存在某種錯誤,否則可能導致讀取模型中的事件失敗?你能告訴我更多關於你的錯誤隊列和實現它的工作嗎(考慮到我在NServiceBus中沒有任何經驗)。 – 2012-03-20 16:36:16

+1

使用NServiceBus(和MSMQ作爲傳輸)時,消息是持久的。這意味着如果你出於任何原因得到一個異常,你可以看看它發送的實際消息。另外,您可以再次將其放入輸入隊列並重新運行。另外,NServiceBus提供了一個非常簡單的方法來設置消息的發送和發佈。開始也不難。看看樣品,並去看看它。 – 2012-03-21 13:40:34

相關問題