2013-03-28 42 views
1

假設我有兩個集合部署在兩個獨立的服務中。 Aggregate 2監聽聚合事件1.事件源頭 - 如何恢復錯過的事件

當我長時間停止聚合服務2時,如何恢復所有錯過的事件?

  1. 從聚合1事件存儲中檢索所有錯過的事件?
  2. 如果聚合1已經累積了很多事件會怎麼樣。聚合2是否允許使用聚合1的快照?

回答

1

1)從聚合1事件存儲中檢索所有錯過的事件?

是的。

2)如果聚合1已經累積了很多事件怎麼辦?聚合2是否允許使用聚合1的快照?

是的。

然而,在權限的分區容忍性一致性的嚴重斷開情況下,你必須安排補償由合計2處理。事實上,你可以遇到這樣的事件已經由骨料處理情況的所有事件的行動2將不可能,如果它已經從集合1正確收到事件。

+0

我很驚訝聚合2可以使用快照,因爲那意味着聚合2服務必須知道如何反序列聚合1 – LostInComputer

+0

如果我理解你的問題,聚合2的系統已經與聚合1的事件耦合在一起。與此相比,反序列化的擔憂相對較小,因爲應該很容易爲需要它的人構建一個Aggregate1SnapshotProvider。但是請注意,這不是一個理論上的建議,只是一個實用的應用,如果這些事件的應用程序過分降低了性能。但請記住:在**之前測量性能**,而不是試圖修復它們! –

1

從集合1事件存儲中檢索所有錯過的事件?

是的,這將是一般的方法。在基礎架構級別,您可以記住上次看到的序列號,然後請求那些事件被推送給您。

如果聚合1已經累積了很多事件怎麼辦?聚合2是否允許使用聚合1的快照?

這裏的答案可能不是 - 如果兩者能夠共享快照,則可能值得重新考慮總體邊界是否正確。然而,這實際上取決於聚合體1中飼料的性質。我通常會避免這種情況,除非您真的在需要的地方遇到問題。

相關問題