Este repositório contém um mono repo com três microserviços desenvolvidos em Spring Boot que trabalham juntos para processar pedidos de forma assíncrona utilizando RabbitMQ.
O sistema é composto pelos seguintes microserviços:
- Order API: Recebe pedidos e publica mensagens na fila do RabbitMQ.
- Notification Service: Consome a fila e envia um e-mail de confirmação ao cliente.
- Processor: Consome a fila de pedidos, salva os dados no banco e notifica sobre o processamento.
[Cliente] ---> [Order API] ---> [RabbitMQ] ---> [Notification Service] ---> [E-mail: Pedido Criado]
|
v
[Processor] ---> [Banco de Dados]
|
v
[RabbitMQ] ---> [Notification Service] ---> [E-mail: Pedido Processado]
- O Order API recebe um pedido via REST API e o publica em uma fila do RabbitMQ.
- O Notification Service consome essa mensagem e envia um e-mail de pedido criado ao cliente.
- O Processor consome a fila, processa o pedido e o salva no banco de dados.
- O Processor também publica uma nova mensagem para notificar que o pedido foi processado.
- O Notification Service consome essa mensagem e envia um e-mail de pedido processado ao cliente.
- Spring Boot (para desenvolvimento dos microserviços)
- RabbitMQ (para comunicação assíncrona)
- Spring Doc (para documentação da API)
- Banco de Dados (PostgreSQL)
- Docker (para ambiente de desenvolvimento)
- Docker e Docker Compose
- Java 17+
- Maven
- RabbitMQ rodando localmente (
docker-compose
recomendado)
git clone https://github.com/thallyta-castro-cv/spring-rabbitmq-order-ops.git
cd spring-rabbitmq-order-ops
docker-compose up -d
cd order-api
mvn spring-boot:run
cd ../notification-service
mvn spring-boot:run
cd ../processor
mvn spring-boot:run
A Order API está documentada utilizando SpringDoc OpenAPI e pode ser acessada no seguinte endpoint:
http://localhost:8081/swagger-ui/index.html
Caso esteja rodando em outra porta, ajuste a URL de acordo com a configuração da sua aplicação.
Para acessar a especificação OpenAPI (Swagger JSON/YAML):
http://localhost:8080/v3/api-docs
http://localhost:8080/v3/api-docs.yaml
Essa documentação permite visualizar e testar os endpoints diretamente pelo navegador.