【发布时间】:2021-02-24 07:21:59
【问题描述】:
我使用事件溯源来存储我的对象。
通过域事件捕获更改,仅包含所需的最少信息,例如
GroupRenamedDomainEvent
{
string Name;
}
GroupMemberAddedDomainEvent
{
int MemberId;
string Name;
}
但是,在我的应用程序的其他地方,我希望在组一般更新时得到通知。我不想积累或响应一堆更细化且不太有用的领域事件。
我理想的订阅活动是:
GroupUpdatedIntegrationEvent
{
int Id;
string Name;
List<Member> Members;
}
所以我做了以下事情:
- 更新组聚合。
- 保存生成的域事件。
- 使用这些生成的域事件来查看是否触发我的集成事件。
对于上面的示例,这可能如下所示:
var groupAggregate = _groupAggregateRepo.Load(id);
groupAggregate.Rename(“Test”);
groupAggregate.AddMember(1, “John”);
_groupAggregateRepo.Save(groupAggregate);
var domainEvents = groupAggregate.GetEvents();
if (domainEvents.Any())
{
_integrationEventPublisher.Publish(
new GroupUpdatedIntegrationEvent
{
Id = groupAggregateId,
Name = groupAggregate.Name,
Members = groupAggregate.Members
});
}
这意味着我在整个应用程序中使用的集成事件与我的事件源域事件中使用的数据不相关。
这是一个明智的想法吗?有没有人有更好的选择?我是否误解了这些术语?
【问题讨论】:
标签: event-sourcing event-driven