我正在使用(优秀的)NEventStore来持久化聚合根事件流。响应某些状态更改,聚合会将命令分派给另一个端点。聚合根使用传入的服务发送命令。这在使用msdtc时工作正常,但显然是有代价的。
目睹了2pc的邪恶之后我现在想要转向内置容错的架构。我明白,在启动期间,NEventStore会自动发送以前失败的事件。
这是否表明所有外部状态更改功能应在成功调度聚合事件后发生,即调度命令到另一个端点以响应IDispatchCommits.Dispatch方法中的特定事件?
或者,或许工作单位会更好?