10

根据http://cre8ivethought.com/blog/2009/11/12/cqrs--la-greg-young负责使用事件发布者发布事件的组件是存储库。

我的问题很简单:为什么会这样?

在这篇博文中,我们被告知:

域存储库负责发布事件,这通常在单个事务中,同时将事件存储在事件存储中。

我本来希望这是事件存储的一项任务:一旦存储了一个事件(或多个事件),它就会被发布。

那么为什么它在存储库中?

4

2 回答 2

9

您的域模型不知道存储机制。另一方面,它必须确保发布适当的事件,无论您使用事件存储、经典 SQL 存储还是任何其他持久性方式。

如果您依赖事件存储来发布事件,那么您将与存储机制紧密耦合。

于 2012-10-01T17:59:32.980 回答
2

存储和发布事件必须是原子指令,因为如果两个操作之一失败,则此事件的侦听器将与事件的生产者不同步。

与从事件存储中发布事件相比,还有另一种(更昂贵的)解决方案,即使用 2pc 事务(两阶段提交)。

你可以在这里找到更多有趣的信息:https ://cqrs.wordpress.com/documents/building-event-storage/

于 2015-04-14T13:55:12.237 回答