A simplified (in memory) example of Event Sourcing implementation in Java for banking domain. Repository is splitted into exercises adding step by step more functionality towards good design of event sourcing with CQRS. You can play around and try to implement exercises or You can check out solution branches.
- Provide simple in-memory implementation of Event Store
- Make all test passing using event sourcing
- branch exercise_1_solution
- Implement Unit of Work pattern where events are stored outside of aggregate
- WIP
- Implement Projections on Account to get number of transactions performed on account
- eventStore.store() method shoud accept Event playload instead of domain Events
- what should be api of eventStream()?
- WIP
- add optimistic locking
- WIP
- Refactor to move all money transfer related stuff to separate aggregate
- New aggregate will be also using Event Store
- WIP
- Apply CQRS rule and separate the command and reading side
- Solution will use Eventual Consistency approach
- WIP
- Provide additional (not transient) implementation of Event Store. (https://geteventstore.com/)
- WIP