最初,我们使用域事件来处理与外部系统的通信。例如,每次用户更新他的电话号码或他的姓名时,我们都会引发一个 PhoneNumberUpdated 和一个 NameUpdated 事件。然后这些被处理程序捕获并发送到其他系统。
public void SetName(Name name)
{
if (Name == name) return;
(...)
RaiseEvent(new NameUpdated(Id, name));
}
public void SetPhoneNumber(PhoneNumber number, PhoneNumberType type)
{
RaiseEvent(new PhoneNumberUpdated());
}
只要我们不需要“聚合”事件,它就可以很好地工作。例如,我们有一项新要求,要求我们在用户更新其姓名和/或电话号码时发送一封电子邮件。使用当前的结构,我们的处理程序将收到多次通知(每个引发的事件一次),这将导致发送多封电子邮件。
让我们的事件更通用似乎不是一个好的解决方案。但是,我们如何聚合在一个事务中引发的多个事件呢?
谢谢 Seb