假設我有兩個集合部署在兩個獨立的服務中。 Aggregate 2監聽聚合事件1.事件源頭 - 如何恢復錯過的事件
當我長時間停止聚合服務2時,如何恢復所有錯過的事件?
- 從聚合1事件存儲中檢索所有錯過的事件?
- 如果聚合1已經累積了很多事件會怎麼樣。聚合2是否允許使用聚合1的快照?
假設我有兩個集合部署在兩個獨立的服務中。 Aggregate 2監聽聚合事件1.事件源頭 - 如何恢復錯過的事件
當我長時間停止聚合服務2時,如何恢復所有錯過的事件?
1)從聚合1事件存儲中檢索所有錯過的事件?
是的。
2)如果聚合1已經累積了很多事件怎麼辦?聚合2是否允許使用聚合1的快照?
是的。
然而,在權限的分區容忍性在一致性的嚴重斷開情況下,你必須安排補償由合計2處理。事實上,你可以遇到這樣的事件已經由骨料處理情況的所有事件的行動2將不可能,如果它已經從集合1正確收到事件。
從集合1事件存儲中檢索所有錯過的事件?
是的,這將是一般的方法。在基礎架構級別,您可以記住上次看到的序列號,然後請求那些事件被推送給您。
如果聚合1已經累積了很多事件怎麼辦?聚合2是否允許使用聚合1的快照?
這裏的答案可能不是 - 如果兩者能夠共享快照,則可能值得重新考慮總體邊界是否正確。然而,這實際上取決於聚合體1中飼料的性質。我通常會避免這種情況,除非您真的在需要的地方遇到問題。
我很驚訝聚合2可以使用快照,因爲那意味着聚合2服務必須知道如何反序列聚合1 – LostInComputer
如果我理解你的問題,聚合2的系統已經與聚合1的事件耦合在一起。與此相比,反序列化的擔憂相對較小,因爲應該很容易爲需要它的人構建一個Aggregate1SnapshotProvider。但是請注意,這不是一個理論上的建議,只是一個實用的應用,如果這些事件的應用程序過分降低了性能。但請記住:在**之前測量性能**,而不是試圖修復它們! –