【问题标题】:Can I use both standard repositories and event Sourcing repositories in axonframework?我可以在 axonframework 中同时使用标准存储库和事件源存储库吗?
【发布时间】:2017-06-13 03:20:18
【问题描述】:

我开发了几个电子商务网站,最近我注意到了 axonframework。 我正在考虑如何使用 axonframework 实现一个新的电子商务网站。

我的意思是使用标准存储库来简单地保存聚合(在我们的例子中,它们是订单),但我们还需要订单历史记录以进行审查。 我想知道我们是否可以使用事件源存储库来持久化订单上的所有事件以实现订单历史记录。

问题:

  1. 我可以同时使用标准存储库和事件源存储库吗 在轴突框架中?
  2. 如果我可以同时使用标准存储库和事件溯源存储库,axonframework 如何按标识符加载聚合,是由标准存储库还是事件溯源存储库完成?
  3. 欢迎提出任何建议。

提前致谢。

【问题讨论】:

    标签: axon


    【解决方案1】:

    本质上,您不需要事件溯源来记录系统中的所有事件;你需要一个活动商店。在 Axon 中,Event Store 是 Event Bus 的特殊版本,它将所有事件存储在 EventStorageEngine(例如 JPA、JDBC 或 Mongo)中,然后再将它们发布给所有侦听器。

    关于存储库,您只能使用单个存储库来加载聚合。它要么是事件源,要么不是。当它是事件源时,聚合是使用它过去发布的事件重建的。否则,ORM 机制将根据存储在数据库中的数据重建当前状态。

    【讨论】:

    • 感谢您的回答,阿拉德。我在想,也许我们可以将 Mongo 用作 NOT Event Sourced EventStorageEngine,并将查询端的所有事件记录为订单历史记录。您提到“在将所有事件发布给所有侦听器之前将所有事件存储在 EventStorageEngine(例如 JPA、JDBC 或 Mongo)中。”这是否意味着即使事件已发布,我们也可以从 EventStorageEngine 获取所有事件?如果答案是否定的,那么我想我们仍然需要自己将查询端的所有事件记录为订单历史记录。
    • 使用事件溯源时,您还必须使用事件存储。但是,当不使用事件溯源时,您仍然可以使用事件存储。在这种情况下,Axon 将仅存储所有事件,因为它们已发布到所有组件。无需“手动”将它们保存在您的处理程序中。
    猜你喜欢
    • 2020-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-15
    • 1970-01-01
    相关资源
    最近更新 更多