Reputation: 4266
I found time as the best value as event version.
I can merge perfectly independent events
of different event sources
on different servers
whenever needed without being worry about read side
event order synchronization
. I know which event
(from server
1) had happened before the other (from server
2) without the need for global sequential event id generator
which makes all read sides to depend on it.
As long as the time is a globally ever sequential event version , different teams in companies can act as distributed event sources
or event readers
And everyone can always relay on the contract
.
The world's simplest notification from a write side
to subscribed read sides
followed by a query pulling the recent changes
from the underlying write side
can simplify everything.
Are there any side effects I'm not aware of ?
Upvotes: 0
Views: 111
Reputation: 19630
Time is indeed increasing and you get a deterministic number, however event versioning is not only serves the purpose of preventing conflicts. We always say that when we commit a new event to the event store, we send the new event version there as well and it must match the expected version on the event store side, which must be the previous version plus exactly one. If there will be a thousand or three millions of ticks between two events - I do not really care, this does not give me the information I need. And if I have missed one event on the go is critical to know. So I would not use anything else than incremental counter, with events versioned per aggregate/stream.
Upvotes: 2