Infraestrutura compartilhada do ecossistema de microserviços. Provisiona o RabbitMQ e a rede Docker utilizada por todos os serviços.
┌─────────────────────────────────────────────────────────────────┐
│ microservices-net │
│ │
│ ┌─────────────────┐ ┌────────────────────────────┐ │
│ │ ms-producer │ │ RabbitMQ │ │
│ │ (Laravel) │─publish▶ fila: user_events │ │
│ │ POST /api/users│ └──────────────┬─────────────┘ │
│ └─────────────────┘ │ consume │
│ ┌─────────▼──────────┐ │
│ │ ms-users │ │
│ │ (Laravel) │ │
│ │ Salva no MySQL │ │
│ └─────────┬──────────┘ │
│ │ publish │
│ ┌─────────▼──────────────┐ │
│ │ fila: notification_ │ │
│ │ events │ │
│ └─────────┬──────────────┘ │
│ │ consume │
│ ┌─────────▼──────────┐ │
│ │ ms-notifications │ │
│ │ (NestJS) │ │
│ │ Envia e-mail │ │
│ │ via Mailtrap │ │
│ └────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
1. Cliente envia POST /api/users para o ms-producer
2. ms-producer valida os dados e publica evento user.created na fila user_events
3. ms-users consome o evento, persiste o usuário no MySQL
e publica evento user.registered na fila notification_events
4. ms-notifications consome user.registered e envia e-mail de boas-vindas
| Serviço | Repositório | Tecnologia | Responsabilidade |
|---|---|---|---|
| ms-producer | matheuspdias/ms-producer | Laravel 12 | Recebe requisições HTTP e publica eventos |
| ms-users | matheuspdias/ms-users | Laravel 11 + DDD | Consome eventos, persiste usuários e publica confirmação |
| ms-notifications | matheuspdias/ms-notifications | NestJS 10 | Consome confirmação de cadastro e envia e-mail |
Consulte o README de cada repositório para instruções de instalação e configuração específicas.
- Docker & Docker Compose
- RabbitMQ 3.13
git clone https://github.com/matheuspdias/microservices-infra.git
cd microservices-infra
docker compose up -dIsso cria a rede microservices-net e sobe o RabbitMQ. Todos os demais serviços se conectam a essa rede declarando-a como external: true.
| Serviço | Porta | Descrição |
|---|---|---|
| RabbitMQ | 5672 | Protocolo AMQP |
| RabbitMQ Management | 15672 | Painel de administração |
Acesso ao painel: http://localhost:15672
Credenciais: rabbit / rabbit
docker exec rabbitmq rabbitmqctl list_queuesMIT