如何" upcast"在Axon

时间:2018-02-08 14:35:45

标签: java cqrs event-sourcing axon

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

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

但表中用作事件存储的type仍然引用CustomAggregate。因此,当我试图获取新聚合类型的所有事件时,如此

eventStore.readEvents("NewCustomAggregate", id);

我(显然)得到一个例外,说明此聚合类型没有事件。

是否有办法不仅考虑升级者中重命名/更改的事件,还要考虑到对于某些事件修订,事件存储应该将NewCustomAggregate类型视为CustomAggregate?< / p>

我使用的Axon版本是2.4.6。

1 个答案:

答案 0 :(得分:2)

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

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