A simplified in-memory example of Event Sourcing with CQRS implementation in Java for the banking domain.
eventsourcing-java-example is an educational Java project that demonstrates how to implement Event Sourcing and CQRS patterns in a banking domain context. It provides a simplified, in-memory example with step-by-step exercises to help developers understand event-driven architecture design. The project focuses on practical learning by gradually adding complexity from basic event storage to command-query responsibility separation.
Java developers and software architects learning about event sourcing, CQRS, and domain-driven design patterns, particularly those interested in financial or transactional systems.
It offers a clear, incremental learning path with hands-on exercises and solution branches, making complex architectural patterns accessible through a concrete banking domain example without requiring external infrastructure.
A simplified (in memory) example of Event Sourcing implementation for banking domain.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
The project is structured with step-by-step exercises that progress from basic event sourcing to advanced CQRS, allowing developers to build understanding gradually, as outlined in the README's exercise steps.
Uses a concrete banking domain with accounts and transactions, making event sourcing concepts tangible and easier to grasp in a real-world context, as highlighted in the key features.
Provides exercises with reference solution branches for each step, enabling developers to practice and compare implementations, as mentioned in the README's solution branches.
The in-memory event store simplifies setup and experimentation by eliminating the need for external databases, making it accessible for learning, as noted in the in-memory implementation feature.
Many advanced exercises, such as Unit of Work, projections, and external event store integration, are marked as WIP in the README, limiting immediate learning for those topics.
The core implementation relies on an in-memory event store, which doesn't address persistence, scalability, or real-world deployment challenges, as indicated by the optional Step 5 for external stores being WIP.
Missing advanced concerns like error handling, transaction management, and integration with messaging systems, which are essential for enterprise applications, due to its educational focus.