假设为客户生成了发票。这个特定的事件看起来像这样:
invoice.raised {
"id": "4dbcff82-6f35-4155-9aec-f8185c1f932f",
"total": "50.00",
"description": "Order 01133",
"customer_id": "c2206843-414d-454f-9894-57c6b11b9c00"
}
这是一个相当简单的示例,它指的是发票所属的客户集合。
当我想创建发票视图并且想在发票中嵌入客户的姓名时,困难就显现出来了。我可以做两件事 - 丰富原始事件以包含客户的姓名或加载客户视图以在我构建发票视图时找出名称是什么。现在这不是一个非常复杂的示例,但在某些情况下,几乎无法再丰富事件,因为我最终将各种聚合的许多属性复制到特定于其他聚合的事件中。
除了丰富事件之外,是否有一种普遍接受的方式来处理这个问题?因为现在每次引发 invoice.cancelled 事件,我都必须再次包含发票金额,以便我可以使用新余额更新客户视图。