在过去的几年中,Eric Evans已经认识到他的DDD模式的更新:域名事件(又名外部事件概念)。
事件采购模式中的内部事件是我们一直关注的内容,例如您的示例中的UserCreatedEvent。使用IEvent标记界面保持这些显式。
尽管在事件总线上发布IEvents,但IDomainEvents对更大的外部到域通知的影响更大,因为它们不会影响每个说法的聚合状态。
所以......
CreateUser (ICommand)
^- CreateUserCommandHandler
UserCreated (IEvent)
^- UserCreatedEventHandler
SendNewUserEmail (ICommand)
^- SendNewUserEmailCommandHandler
NewUserEmailSent (IDomainEvent)
^- UserRegistrationService or some other AC
我仍然很新的事件采购自己;但是,我猜你可以在总线上登录UserRegistrationService
来侦听SendNewUserEmail ICommand。
无论你走到哪里,我都会集中精力为发送电子邮件创建其他命令/事件并发送电子邮件。然后,稍后您可以查看事务日志,了解它的排队时间,发送时间,发送时是否有重试,同时发送了多少时间,是否会影响时间延迟(日期时间差异)显示任何瓶颈?,安装一个发送电子邮件的队列,并将其分解为一个较小的独立服务等等。
这里的假设是您将发布事件,而不是将它发送到每个端点。真的吗? – 2012-08-10 12:42:54
是的,这是正确的,我发布和执行命令后的事件。 Udi Dahan指出,一个命令/命令处理程序对应该负责发起一个事件,并且只负责该特定事件。没有其他双人应该射击那个事件。 – 2012-08-13 12:52:05
假设事件在成功写入时发布,我没有看到有几个端点为了不同的目的而提取和处理事件的问题。 – 2012-08-13 12:58:12