Axon框架是否支持事件向下转换?移除属性能否实现?
Axon框架事件版本相关问题解答
1. Axon框架是否支持事件向下转换?
Axon框架原生不支持事件向下转换(Event Downcasting)。
事件向下转换是将新版本事件转为旧版本格式,这和Axon事件溯源的设计逻辑相悖——Axon的核心思路是让当前系统适配最新的事件结构,而非让事件兼容旧版本的处理逻辑。框架默认只提供向上转换能力,用来让旧事件适配当前系统的预期。如果确实有向下转换的需求,只能自行在事件发布或消费的自定义逻辑中实现,框架没有原生的工具或接口支持。
2. 移除事件属性时,能否通过向上转换实现?
完全可以。
Axon的向上转换本身就是用来调整事件结构,让不同版本的事件适配当前系统的处理逻辑。当后续版本需要移除事件的部分属性时,只需要编写对应的向上转换器:将存储的旧版本事件(带待移除属性)转换为新版本事件(不带该属性),转换过程中只需保留需要的属性,忽略要移除的字段即可。
举个简单例子:
- 旧版本事件
UserRegisteredV1包含id、username、email、phone四个属性 - 新版本事件
UserRegisteredV2移除了phone属性 - 编写的向上转换器会把
UserRegisteredV1的id、username、email映射到UserRegisteredV2,直接丢弃phone字段
这样,当系统读取旧事件时,转换器会自动将其转换成新版本格式,供当前的事件处理器处理,完全不需要修改已存储的旧事件。
内容的提问来源于stack exchange,提问作者Mafei
相关产品推荐
相关产品推荐

