2013-02-17 29 views
0

我有問題DDD。我剛開始使用它,所以我沒有太多的經驗。 有兩個有界的上下文:維護和客戶端。每個客戶端都有一個引擎部分的列表。在維護中存儲公司,其職業是維修。客戶可以爲每個部分選擇首選公司。
管理員可以暫停公司。兩個總計有變化。首先,它改變了公司的地位,下一個公司應該從偏好它的客戶那裏移除。 處理它的最佳模式是什麼? 我可以在聚合中創建兩個處理程序,但是如何在處理程序中的一個引發異常時回滾更改?CQRS/ES - 改變兩個聚集處理的

+0

如果真的被刪除?如果它再次未被暫停?是否真的應該從客戶的偏好中獲益呢? :) – 2013-02-17 14:24:19

+0

好的。也許這不是最好的例子。我考慮如何解決情況,當我必須對兩個聚合進行更改時,處理程序可能會拋出異常。 – Max 2013-02-17 15:43:38

+1

聽起來像你有界的上下文需要修改。理想情況下,你不想在它們之間有依賴關係。 – stephenl 2013-02-17 22:27:29

回答

0

它看起來像你需要聚集修改您的一致性界限。

但是,如果修改後,你還需要改變你可以考慮一下,最終一致的系統和使用域名的事件一個交易兩個聚集處理的(但在CQRS你已經做到這一點,不是嗎?)。

Vaughn Vernon在他的書「Implementing Domain-Driven Design」中提出了處理最終一致性的下一個方法: 聚合發佈域事件被傳遞給一個或多個訂閱者。每個訂閱者都在自己的交易中執行(因此您仍然在交易中更改一個彙總)。如果事務失敗(訂閱者在超時時間內不確認成功)再次聚合發送消息或執行一些回滾例程。

由於您使用的事件採購可以標記「失敗」事件被否決,並使用Fowler's Retroactive Event mechanism