【问题标题】:How to "upcast" the aggregate type after an aggregate was renamed in Axon如何在 Axon 中重命名聚合后“向上转换”聚合类型
【发布时间】:2018-02-08 22:48:43
【问题描述】:

假设我有一个现有的聚合 CustomAggregate 和一个由聚合处理的事件 CustomEvent

在事件存储已经包含此聚合的一些事件一段时间后,我需要将聚合和事件重命名为 NewCustomAggregateNewCustomEvent。我更新了重命名事件的修订版并创建了一个相应的 upcaster 来处理事件重命名。

但表中用作事件存储的type 仍然指的是CustomAggregate。因此,当我尝试获取像这样的新聚合类型的所有事件时

eventStore.readEvents("NewCustomAggregate", id);

我(显然)收到一个异常,指出此聚合类型没有事件。

有没有办法不仅考虑上转换中重命名/更改的事件,还考虑到对于某些事件修订,事件存储应将NewCustomAggregate 类型视为CustomAggregate

我使用的 Axon 版本是 2.4.6。

【问题讨论】:

    标签: java cqrs event-sourcing axon


    【解决方案1】:

    在 Axon 2 中,您不能向上转换任何不在事件本身有效负载中的信息。相反,您必须直接在数据库中更改聚合类型。

    一点背景:Axon 2 使用此列来检索特定聚合的事件(连同聚合标识符)。如果这是使用 upcaster 更新的,数据库将无法将类型与任何事件匹配。所以基本上,改变表中的值是你最好的选择。

    【讨论】:

    • 谢谢!我认为是这种情况,但有点希望有一个更优雅的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 2021-12-24
    • 2019-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多