亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Axon - 在查詢時進行投影的最簡單方法

Axon - 在查詢時進行投影的最簡單方法

叮當貓咪 2022-12-15 16:03:38
我通常每個聚合有 5-6 個事件,并且不想將預測存儲在數據庫中。在查詢時始終進行視圖投影的最簡單方法是什么?
查看完整描述

1 回答

?
千巷貓影

TA貢獻1829條經驗 獲得超7個贊

對此的簡短回答是,沒有簡單/快速的方法可以做到這一點。

但是,實施“在請求時重播給定事件”設置肯定是可行的。

我建議你做的事情分為幾個步驟:

  1. 創建你想返回的查詢模型,它可以處理事件@EventHandler在模型上使用帶注釋的方法)

  2. 創建一個組件,它可以處理將在第一步中返回查詢模型的查詢(為此使用帶@QueryHandler注釋的方法。

  3. 查詢處理組件應該能夠從EventStore. 如果這是基于aggregateIdentifier,請使用該EventStore#readEvents(String)方法。如果需要整個事件流,需要使用StreamableMessageSource#openStream(TrackingToken)方法(注:EventStore接口實現StreamableMessageSource

  4. 在處理查詢時,創建一個AnnotationEventHandlerAdapter,給它一個新的查詢模型實例

  5. 對于您在第 3 點中創建的事件流中的每個事件,調用該AnnotationEventHandlerAdapter#handle(EventMessage)方法。此方法將@EventHandler在您的查詢模型對象上調用帶注釋的方法

  6. 如果流耗盡,您可以確保您的查詢模型的所有必要事件都已處理。因此,您現在可以返回查詢模型

因此,我再次重申,我不認為這過于瑣碎、容易或快速設置。此外,第 3 步中有一個警告?;诰酆蠘俗R符檢索給定聚合的流非??焖?簡潔,因為聚合通常沒有很多事件。

但是,如果您的查詢模型跨越多個聚合,則需要基于 a 檢索事件流TrackingToken,這可以確保您拉入整個事件存儲以動態實例化您的模型。當然,您可以在處理 a 時微調您希望事件流從中返回事件的時間點TrackingToken,但是更改非常高,您將不完整且相對較慢。

但是,您聲明要檢索給定聚合標識符的事件。因此,我認為這在您的場景中應該是一個可行的解決方案。

希望這可以幫助!


查看完整回答
反對 回復 2022-12-15
  • 1 回答
  • 0 關注
  • 105 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號