FAQ - frequently asked questions
How can I ensure that only specific users can execute commands?
You can either replace the implementation of ICommandBus
with your own implementation, or add a decorator that adds the authentication logic.
Why isn't there a "global sequence number" on domain events?
While this is easy to support in some event stores like MSSQL, it doesn't really make sense from a domain perspective. Greg Young also has this to say on the subject:
Quote
Order is only assured per a handler within an aggregate root boundary. There is no assurance of order between handlers or between aggregates. Trying to provide those things leads to the dark side. >
Why doesn't EventFlow have a unit of work concept?
Short answer, you shouldn't need it. But Mike has a way better answer:
Quote
In the Domain, everything flows in one direction: forward. When something bad happens, a correction is applied. The Domain doesn't care about the database and UoW is very coupled to the db. In my opinion, it's a pattern which is usable only with data access objects, and in probably 99% of the cases you won't be needing it. As with the Singleton, there are better ways but everything depends on proper domain design. > `Mike
If your case falls within the 1% case, write a decorator for the
ICommandBus
that starts a transaction, use MSSQL as event store and
make sure your read models are stored in MSSQL as well.
Why are subscribers receiving events out of order?
It might be that your aggregates are emitting multiple events. Read about subscribers and out of order events.