2017-06-13 58 views
1

我開發了幾個電子商務網站,最近我注意到了axonframework。 我正在考慮如何使用axonframework實現新的電子商務網站。我可以在axonframework中使用標準存儲庫和事件採購存儲庫嗎?

我的意思是使用標準存儲庫來簡單地保持聚合(在我們的情況下,它們是訂單),但我們也需要訂單歷史記錄以供審查。 我不知道我們是否可以使用事件採購倉庫來保存訂單上的所有事件以實施訂單歷史記錄。

問題:

  1. 我可以使用axonframework了標準庫和事件採購庫 ?
  2. 如果我可以使用標準存儲庫和事件採購存儲庫,那麼axonframework如何通過標識符加載聚合,是由標準存儲庫還是事件採購存儲庫完成的?
  3. 任何建議表示讚賞。

在此先感謝。

回答

1

實質上,您不需要事件源就能記錄系統中的所有事件;你需要一個活動商店。在Axon中,Event Store是事件總線的專用版本,它將所有事件發佈到EventStorageEngine(例如JPA,JDBC或Mongo),然後將其發佈到所有偵聽器。

關於存儲庫,您只能使用單個存儲庫加載聚合。它或者是事件源,或者不是。當它發生事件時,使用它在過去發佈的事件重建聚合體。否則,ORM機制將根據存儲在數據庫中的數據重建當前狀態。

+0

感謝您的回答,阿拉德。我在想,也許我們可以使用Mongo作爲NOT Event Sourced EventStorageEngine,並將查詢端的所有事件記錄爲訂單歷史記錄。 您提到過「在將事件發佈到所有偵聽器之前將所有事件存儲在EventStorageEngine(例如JPA,JDBC或Mongo)中」,這是否意味着我們可以從EventStorageEngine獲取所有事件,甚至事件已發佈? 如果答案是否定的,那麼我想我們仍然必須自己記錄查詢方面的所有事件作爲訂單歷史記錄。 –

+0

使用事件源時,您還必須使用事件存儲。但是,當不使用事件源時,您仍然可以使用事件存儲。在這種情況下,Axon只會將所有事件發佈到所有組件時進行存儲。無需「手動」將它們保存在您的處理程序中。 – Allard

相關問題