2012-04-18 85 views
5

我正在CQRS /事件存儲系統上工作。目前,我使用的模式是命令是同步的。也就是說,在命令完成之前,用戶界面不顯示操作完成,並且向用戶顯示成功/失敗。在執行命令期間,所有生成的事件(例如,動作X發生在聚合根Y上)都存儲在持久存儲器中。在CQRS/ES系統中存儲命令有什麼優勢?

所有這一切我已閱讀器命令存儲CQRS的描述。我想知道這是否需要在我的情況。其他

一注 - 有很多長時間運行的命令式的行動,所以我已經打破了操作成生成事件的命令,並反過來問題的詳細命令的事件。基於聚合根的狀態,這些命令是冪等的。我不知道這會如何影響答案,但值得指出。

感謝, 埃裏克

+0

能提供存儲命令執行的一些例子嗎?我見過的大多數例子只存儲了由於命令而產生的事件。 – 2012-04-18 15:38:05

+0

我沒有任何框架,但沒有事件源的CQRS記錄命令進行回放,至少從我的理解。 – 2012-04-18 20:13:19

+0

我對安全性略有擔憂。您打算如何處理ChangeUserPassword等包含明文密碼的命令? – Kimble 2012-08-02 06:55:58

回答

6
  1. 迴歸測試 每次迭代開發,你可以從生產環境中搶命令日誌後,重新執行它,比較一個在生產中產生的事件流。如果它們不同 - 你的邏輯就會退化。

  2. 消息流的可視化和分析。

4

,我已經看到不活動的採購CQRS的例子是存儲系統的狀態,而不是事件,顯示數據的狀態如何發生的平常關係數據庫。 「命令採購」對我來說是一個新概念,看起來並不錯,因爲命令處理程序可以隨時間變化。對命令處理程序邏輯的任何更改都可能導致重播時失敗。因爲您的對象屬性是直接設置的,所以重放事件不會有這個問題。

+0

這很有道理 - 謝謝! – 2012-04-19 22:00:40