Skip to content

cristianbrunone/ms-notification-service

Repository files navigation

📧 Microserviço de Notificação (notification)

📌 Descrição

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.


🧱 Tecnologias Utilizadas

  • NestJS
  • Prisma ORM
  • PostgreSQL
  • RabbitMQ
  • Docker + Docker Compose
  • Node.js v20.12.0

📂 Estrutura de Pastas

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.md

🧪 Como Executar o Projeto

1. Clonar o repositório

git clone https://github.com/cristianbrunone/ms-notification-service.git
cd notification

2. Subir containers do PostgreSQL e RabbitMQ

Utilize os mesmos containers definidos no projeto payment.

docker-compose -f ../payment/docker/docker-compose.yaml up
docker-compose -f ../payment/docker/docker-rabbit.yaml up

3. Instalar dependências do projeto

npm install

4. Criar banco com Prisma

npx prisma migrate dev

5. Iniciar a aplicação

npm run start

📤 Recebimento de Mensagens

Este 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.


📸 Prints de Funcionamento

  • 🗃️ Tabela CreditCard no pgAdmin
    pgadmin-payment

  • ✅ Envio de Pagamento via ThunderClient
    post-do-payment

  • 📧 Tabela Mail preenchida pelo serviço de notificação
    pgadmin-mail

  • 📬 RabbitMQ
    rabbitmq

  • 🖥️ Saída no Terminal com logs do processamento -service Notification
    saida-do-notification


🔄 Comunicação Assíncrona

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.

✅ Critérios Atendidos

✔️ Serviços independentes (payment e notification)
✔️ Comunicação assíncrona via RabbitMQ
✔️ Persistência das notificações no banco de dados


✍️ Autor

Aluno: Cristian Brunone
Curso: Desenvolvimento de Sistemas Móveis e Distribuídos
Data: Maio/2025

About

Microsserviço Notification

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published