在 Axon 中重命名聚合后如何 "upcast" 聚合类型

How to "upcast" the aggregate type after an aggregate was renamed in Axon

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

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

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

eventStore.readEvents("NewCustomAggregate", id);

我(很明显)收到一个异常,说没有此聚合类型的事件。

有没有办法不仅考虑 upcaster 中的 renamed/changed 事件,而且考虑到对于某些事件修订,事件存储应该将 NewCustomAggregate 类型视为 CustomAggregate?

我用的Axon版本是2.4.6.

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

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