Este é o microsserviço base responsável pelo gerenciamento de pedidos de uma arquitetura de E-commerce orientada a eventos (EDA - Event-Driven Architecture). Ele foi construído com foco em alta disponibilidade, testes automatizados (TDD) e práticas de infraestrutura como código (DevOps).
O serviço atua como o ponto de entrada para novas compras. O fluxo de funcionamento consiste em:
- Receber o payload do pedido via API REST.
- Persistir o pedido no PostgreSQL com o status inicial
PENDENTE. - Publicar um evento (
pedido.criado) de forma assíncrona no RabbitMQ. - Retornar o
Status 201 Createdpara o cliente sem bloquear a thread esperando validações de estoque.
Esse modelo garante que o serviço de pedidos continue operando rapidamente mesmo que outros serviços (como o Inventário) estejam temporariamente indisponíveis.
- Java 21: Utilização de
recordspara DTOs imutáveis, garantindo thread-safety e melhor performance. - Spring Boot: REST APIs, Spring Data JPA, Spring AMQP.
- PostgreSQL: Banco de dados relacional isolado para este domínio.
- RabbitMQ: Message Broker gerenciando exchanges e filas.
- TDD (Test-Driven Development): Cobertura de regras de negócio com JUnit 5 e Mockito.
- Docker & Docker Compose: Orquestração local.
- Multi-stage Docker Build: O
Dockerfileda aplicação foi otimizado utilizando múltiplos estágios (Builder + JRE Runtime), garantindo uma imagem final segura (rodando com usuário não-root) e extremamente leve.
Todo o ambiente (Banco de dados, Mensageria e a própria Aplicação) está empacotado e orquestrado no Docker Compose.
- Docker e Docker Compose instalados.
- Clone o repositório:
git clone [https://github.com/Joaovirone/e-commerce-messaging.git](https://github.com/Joaovirone/e-commerce-messaging.git) cd nome-do-repo - Suba o conteiner:
docker compose upp -build - Verifique se os serviços estão rodando:
API (Aplicação): http://localhost:8080 RabbitMQ Management UI: http://localhost:15002 (Usuário: admin / Senha: admin123)