【发布时间】:2022-02-15 23:29:37
【问题描述】:
假设一个事件流是一个事务边界并且聚合是一个写入模型来强制执行不变量,我可以有两个或多个聚合专用于一个事件流吗?如果由于性能或过于复杂的设计原因无法选择一个大型聚合体?
例如,我有以下由一个事件流表示的域模型:
{
"Products": [{
"Id": 1,
"Name": "Call-Centre",
"Services": [
{
"Id": 10,
"Name": "CloudStorage",
"Price": 250,
"Discount": 100
}
]
}]
我需要强制执行两个不变量。第一:每个产品的服务必须是唯一的(按名称)。第二:服务折扣值不能超过实际价格。 现在我考虑使用两个聚合: ProductAggregate 包含用于强制执行第一个不变量的服务集合; ServiceAggregate 仅包含用于执行第二个的服务信息。 我的解决方案是否存在一些缺陷?
【问题讨论】:
标签: domain-driven-design event-sourcing event-stream