Example project to demostrate how Spark can help to develop enterprize services.
The project consists of two versions: respecting command completion and without it. Both versions follow to CQRS approach however with some limitation:
- Single storge for write and read models. Both models use the same mongo collections
- Repositories do not fire domain events
Project uses:
- Read model: Spring Boot/MVC for Facade application (just REST enpoints and read models)
- Kafka for data integration (delivering commands and events).
- Write model: Spark Streaming for command processing. All business logic lives on this side.
The application itself is simple bulletin board with just two basic operations
- add bulletin
- view list of all bulletins.
- Follow corresponding subproject
- [For IDEA] activate option to use annotation processors for current project
- ./gradlew build
- Follow corresponding subproject
- cd
./scripts/and rundocker-compose up - run bl-processor app (MainApp class)
- run Spring Boot facade app
- run GET/POST localhost:8080/bulletinboard