Why is the CQRS repository publishing events, not the event store?

自闭症网瘾萝莉.ら 提交于 2019-11-30 12:16:16

问题


According to http://cre8ivethought.com/blog/2009/11/12/cqrs--la-greg-young the component responsible for publishing events using an event publisher is the repository.

My question simply is: Why is that?

In this blog post we are told that:

The domain repository is responsible for publishing the events, this would normally be inside a single transaction together with storing the events in the event store.

I would have expected this as a task of the event store: Once an event (or multiple events) has been stored, it's published.

So why is it on the repository?


回答1:


Your domain model is unaware of the storing mechanism. On the other hand it must make sure that the appropriate events will be published, no matter if you use an event store, a classical SQL store, or any other means of persistence.

If you rely on the event store to publish the events you'd have a tight coupling to the storage mechanism.




回答2:


Storing and publishing the event must an atomic instruction because if one of both actions fails, the listeners of this event will be out of sync with the producer of the event.

There is a another (more expensive) solution, compared to publishing the event from the event store, which is to use 2pc transactions (two-phases commit).

you can find some more intereting information here: https://cqrs.wordpress.com/documents/building-event-storage/



来源:https://stackoverflow.com/questions/12677926/why-is-the-cqrs-repository-publishing-events-not-the-event-store

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!