Este projeto implementa um microserviço de notificação, responsável por receber mensagens do microserviço de pagamento via RabbitMQ e persistir essas notificações em banco de dados. Toda a lógica é assíncrona e desacoplada do serviço de origem.
As mensagens recebidas são do tipo orderConfirmation ou paymentConfirmation, e são persistidas em uma tabela Mail.
- NestJS
- Prisma ORM
- PostgreSQL
- RabbitMQ
- Docker + Docker Compose
- Node.js v20.12.0
notification/
├── prisma/
│ ├── migrations/
│ └── schema.prisma # Modelo Mail + Enum MailType
├── src/
│ ├── mail/
│ │ ├── types/message.ts # Tipo da mensagem recebida via Rabbit
│ │ ├── mail.controller.ts
│ │ ├── mail.service.ts
│ │ └── mail.module.ts
│ ├── app.module.ts
│ ├── app.controller.ts
│ ├── app.service.ts
│ └── main.ts
├── test/
├── .env
├── README.mdgit clone https://github.com/cristianbrunone/ms-notification-service.git
cd notificationUtilize os mesmos containers definidos no projeto
payment.
docker-compose -f ../payment/docker/docker-compose.yaml up
docker-compose -f ../payment/docker/docker-rabbit.yaml upnpm installnpx prisma migrate devnpm run startEste microserviço escuta a fila notification no RabbitMQ, utilizando os padrões:
register– mensagem enviada após a criação de um pagamento.confirmation– mensagem enviada após a confirmação do pagamento.
Cada mensagem é processada, persistida na tabela Mail e registrada no console.
Este microserviço consome mensagens publicadas pelo serviço de pagamento via RabbitMQ, respeitando o padrão de mensageria desacoplada:
register→ gera notificação de pedido recebido.confirmation→ gera notificação de pagamento confirmado.
✔️ Serviços independentes (payment e notification)
✔️ Comunicação assíncrona via RabbitMQ
✔️ Persistência das notificações no banco de dados
Aluno: Cristian Brunone
Curso: Desenvolvimento de Sistemas Móveis e Distribuídos
Data: Maio/2025