Este projeto demonstra como os conceitos de Event Sourcing e CQRS podem ser aplicados em uma arquitetura de microsserviços. O exemplo consiste em um e-commerce e mostra a interação entre dois serviços: orders e products. Ele foi utilizado como referência para a minha talk no 9° Meetup do Criciúma DEV!
Serviço responsável por gerenciar o catálogo de produtos do e-commerce. Ele publica eventos sobre produtos para todos os serviços interessados nestes dados. Além disso, utiliza os mesmos eventos para montar o estado atual do catálogo (event-sourcing).
Serviço que responde os comandos dos usuários relacionados a compras. Os comandos enviados pelos usuários a este serviço geram eventos, que por sua vez são utilizados para montar o estado atual de cada compra realizada.
O serviço de compras também utiliza os eventos publicados pelo serviço de produtos para verificações de regras de negócio - ex.: verificar se o produto tem saldo em estoque.
Você vai precisar da ☕ JDK 8+ para compilar o projeto e do 🐋docker-compose para executar tudo sem ter dores de cabeça :)
$ cd products
$ ./mvnw clean package
$ cd ../orders
$ ./mvnw clean package
$ cd ..
$ docker-compose up -d orders products
Depois, você pode usar as coleções do Postman deste repositório para interagir com os serviços.