當事件越來越多的時候,每次查詢aggregate時,若從事件溯源(Event Sourcing)第1個開始一個個往後滾,會使查詢變慢,但Query查詢是映射過僅...
測試一下snapshot是否work 在new 先前的 cqrs event store 改為aggregate: let reader_store: Pers...
之前snapshot是每一個事件就snapshot一份,如果改用new_snapshot_store可以設定多少事件snapshot一份,有時候如果想取折衷可以...
寫程式一定會面臨修改,所以先前的在套DomainEvent時,需要實作事件本身的版本,序列化後的event store會紀錄當時產生時的版號,以供未來程式異動時...
先拿book開刀,先改一個新的版本,原需要Book沒有作者欄位,添加上此欄位,並設定為必填項目,在command裡是必填,但aggregate及event為了保...
upcaster用來把舊版本event映射為新版本,有很多種不同實作方式,比如一版一版跳:1 -> 2 -> 3 ... -> 10;或是直接...
實作完 upcaster 在建立 EventStore時,加入with_upcasters的方式傳入即可使用: let book_event_upcaster...
最後在main裡重置BookCreated事件 let old_events = old_serialized_events(); let _: Vec<...
event store裡的metadata 先前沒有用到,這個推測是application layer使用,不是Domain Event本身內容,如api接到的...
其實沒預期自己可以完成,原本抱著好奇心學rust的同時,查找rust如何實作領域驅動設計及乾淨架構的概念,就無意間翻到了這個套件和其說明文件: 套件:https...