2011-04-22 44 views

回答

2

堆棧溢出是問題的最佳場所,因爲每個人都可以從答案中受益。

快照通常應該採取「帶外」 - 即超出處理的主線。換句話說,當一系列事件發生時,你不想在這一點上拍攝快照。相反,你會想讓另一個線程或進程異步獲取快照。我建議使用另一個線程而不是完全獨立的進程,因爲您不必擔心確保程序集(域,消息等)與主處理線程相同。

「如何」拍攝快照的代碼由最終用戶決定。我很可能會在接下來的一週內提供一些額外的指導,瞭解拍攝快照的確切步驟。

一個額外的考慮是,你真的需要快照嗎?你有多少流量超過1000個事件?如果沒有,那麼你幾乎肯定不需要快照的複雜性。

+0

很明顯,在主處理之外拍攝快照並且在不需要時不包括它的複雜性(正如您的優秀文檔中所述)。但我有關於整個API的問題:有一種方法GetStreamsToSnapshot,但我如何訪問配置的IPersistStreams?我怎樣才能從它的返回值IEnumerable 獲取聚合的類型,用於加載具有EventStoreRepository的聚合以獲取其快照?你會在哪裏提供指導,你的博客? – andy 2011-04-23 19:00:07

+0

用於保存快照的API需要我將在明天處理的少量工作。要加載快照,OptimisticEventStore有一個單獨的方法:GetSnapshot會返回快照(如果找到)。從那裏,只需調用GetFrom()並傳入快照即可。快照可以保存在內存中,因此不需要每次都加載。事實上,在超低延遲的系統中,您將需要內存中的大部分內容,因此您只能寫入事件存儲。 – 2011-04-26 00:56:37

+0

最近的提交暴露了IStoreEvents接口上的GetStreamsToSnapshot,它的主要實現,OptimisticEventStore:https://github.com/joliver/EventStore/commit/2ac284ad99f1408e5665dfcf654e575c19932794 – 2011-04-27 03:02:47

相關問題