CQRS stands for Command Query Responsibility segregation, which means that you can use a different model to update information and a different model to read information. Typically by different model we mean actual object model and propably on different machine.
In this example I am using
* Kafka as event store (for event sourcing)
* MongoDB as Write store
* Could use Elasticsearch as Read store
* Spring Cloud Stream to abstract the event store and the publish/subscribe mechanism