嗨,我有以下塞納里奧我不明白如何讓最終一致性:域事件和版本沒有CQRS
- 用戶1使用基於任務的用戶界面更改客戶名稱
- 應用服務調用操作上上客戶名稱骨料
- 骨料火災事件改變
- 總線使用nservicebus
- NServicebus服務裸片發送消息
- 用戶2得到聚集,並呼籲改變地址
- 聚合操作稱爲
- 域觸發的事件
- 信息放在總線
- 客車重新啓動
- 消息2拿起第一
- 消息2處理等有限上下文更新了新地址
- 消息1現在拿起這是錯誤的訂單
- 現在會發生什麼
如果我們在事件中傳遞聚合的版本,那麼13中會有樂觀的併發錯誤嗎?
如果是這樣,消息1新獲取應用於其他上下文中的對象。我們如何保持一致?
這是阻止我在我的域中應用事件的問題。所有幫助歡迎。
基本的想法是在另一個上下文中更新另一個聚合。我只是停留在這個併發技術上。
在命令處理程序和命令按下總線的意義上,我們不使用事件源或CQRS。只有我們想要異步發生的事件處理,因爲我們有一個我們不希望改變的現有設計。
Blair
我不確定你的意思。我通過nservicebus發送活動,所以沒有訂購。如果我爲我的事件添加序列號,我該如何在另一端執行排序?我錯過了什麼,一定有什麼明顯的我沒有看到。 – 2013-03-02 12:17:15
也有NServicebus與多個線程不保證他們將按順序處理。 – 2013-03-02 12:19:59
跟蹤另一端的序列號。在序列號匹配'最後處理的序列號+ 1'之前不要處理該消息。 – 2013-03-02 12:21:09