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