Skip to content

matheuspdias/microservices-infra

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 

Repository files navigation

Microservices Infra

Infraestrutura compartilhada do ecossistema de microserviços. Provisiona o RabbitMQ e a rede Docker utilizada por todos os serviços.

Arquitetura

┌─────────────────────────────────────────────────────────────────┐
│                        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      │       │
│                                   └────────────────────┘       │
└─────────────────────────────────────────────────────────────────┘

Fluxo de um cadastro

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ços

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.

Tecnologias

  • Docker & Docker Compose
  • RabbitMQ 3.13

Setup

git clone https://github.com/matheuspdias/microservices-infra.git
cd microservices-infra

docker compose up -d

Isso cria a rede microservices-net e sobe o RabbitMQ. Todos os demais serviços se conectam a essa rede declarando-a como external: true.

Portas

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

Verificar filas

docker exec rabbitmq rabbitmqctl list_queues

Licença

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors