在試圖讓我的頭繞過CQRS(以及一般的DDD)時,遇到兩個事件發生在不同集合上的情況,但它們的順序具有領域含義。如果是這樣的話,那麼他們可能會發生如此緊密的聯繫,以至於一個時間戳(正如我看到的示例實現所使用的)無法區分它們,這意味着事件存儲不包含該域的「完整」表示,因爲該訂單存在歧義在哪些事件發生。在CQRS(事件源)中,是否需要事件存儲中的全局序列計數器?
舉個例子,域可以觸發一個CustomerCreatedEvent
應用於所Customer
彙總,然後在Agent
骨料CustomerAssignedToAgent
事件。如果事件發生在CustomerCreatedEvent
之前,則CustomerAssignedToAgent
事件沒有意義,但通常這兩個事件可能由於一次操作而被解僱,這使得時間戳可能實際上是相同的。
所以,我只是建模事情很糟糕?是否應該存在一種情況,即不同總量的事件序列是重要的?還是應該在活動商店中保留一個全局序列號,以便確定事件發生的確切順序?
謝謝Szymon,我認爲這是最有可能的情況! – 2010-06-02 12:33:39
我已經閱讀了很多次,但是...當你使用EventStore作爲隊列來消費來自其他有界上下文的事件,或者甚至是在生成它們的同一個BC時,如何確保你獲得它們爲了?你不需要它們,但是你至少需要能夠從給定的偏移量中消耗它們。 – Papipo 2014-06-17 18:01:22