Skip to content

O notifications-service é um microsserviço de notificações integrado com o Kafka que lida com notificações de diversos producers

License

Notifications You must be signed in to change notification settings

MrRioja/notifications-service

Repository files navigation

Notifications Service - Ignite Lab NodeJS

GitHub top language GitHub last commit


SobreNotifications ServiceInstalaçãoTecnologiasAutor


Sobre

Projeto desenvolvido durante o Ignite Lab de NodeJS, evento criado pela Rocketseat. Um evento 100% online e GRATUITO, com conteúdo exclusivo e INÉDITO.

Ocorreu do dia 12 ao dia 14 de Dezembro de 2022 e teve como intuito mostrar como construir um microsserviço moderno com NodeJS, NestJS, Prisma, TypeScript, Redis e diversas outras tecnologias.

Wallpaper

Notifications Service

O Notifications Service é um microsserviço responsável por lidar com notificações de diversas fontes. A ideia do projeto é entender como arquitetar um microsserviço de melhor maneira afim de tê-lo desacoplado de qualquer tecnologia do meio externo e que seja altamente escalável, seguindo as melhores praticas de programação com esse tipo de arquitetura e as tecnologias mais modernas do momento no mundo do NodeJS.

Esse projeto é um consumer do Kafka que irá consumir mensagens de um tópico chamado notifications.send-notification e irá realizar registros das notificações em uma tabela no banco de dados.

O cluster Kafka pode ser criado de diversas formas e integrado ao projeto, a maneira realizada aqui foi utilizando o serviço Upstash. Ao acessa-lo, basta criar uma conta, criar o cluster e tópico e conectar a aplicação a ele. Deixo abaixo um exemplo do dashboard de uso do serviço aonde realizei os testes da aplicação:

Upstash Dashboard

Como podemos ver acima, no momento do print-screen, havia produzido 30 mensagens, das quais 27 foram consumidas por esse microsserviço e registradas em nosso banco de dados.

Ao executar a aplicação, ela se conecta ao nosso cluster e consome as mensagens que estão no tópico:

App start log

Caso existam mensagens a serem consumidas, a aplicação as consome e gera os registros em nosso BD, nesse caso, um banco SQLite. Vamos ver os registros no exemplo abaixo:

Notification table

A aplicação utiliza o Prisma e executando o comando prisma studio conseguimos subir uma interface web para visualizar nosso banco de dados, aonde podemos ver as notificações sendo registradas.

Para manipular nossos registros a aplicação conta com uma API REST contendo endpoints para criar e cancelar notificações, marca-las como lidas e não lidas, além de rotas para obter o total de notificações ou as próprias notificações de um usuário.

Deixarei abaixo a coleção das requisições para serem importadas no Insomnia:

Run in Insomnia

Como esse microsserviço é apenas um consumer, deixarei nesse repositório a pasta notifications-kafka-producer, a qual contem o código de um simples producer kafka para gerar as mensagens a serem consumidas pelo notifications-service.

Instalação

Antes de começar, você vai precisar ter instalado em sua máquina as seguintes ferramentas: Git, Node.js. Além disso é bom ter um editor para trabalhar com o código como VSCode.

🎲 Rodando o Back End (servidor)

# Clone este repositório
$ git clone git@github.com:MrRioja/notifications-service.git

# Acesse a pasta do projeto no terminal/cmd
$ cd notifications-service

# Instale as dependências
$ npm install
# Caso prefira usar o Yarn execute o comando abaixo
$ yarn

# Execute a aplicação em modo de desenvolvimento
$ npm run start:dev
# Caso prefira usar o Yarn execute o comando abaixo
$ yarn start:dev

# Execute os testes da aplicação
$ npm run start:test
# Caso prefira usar o Yarn execute o comando abaixo
$ yarn start:test

# O servidor inciará na porta 3000 - acesse <http://localhost:3333>

Tecnologias

Node.js

NestJS

Jest

Kafka




Autor

Luiz Rioja

Backend Developer

LinkedIn GitHub Gmail WhatsApp Skype

About

O notifications-service é um microsserviço de notificações integrado com o Kafka que lida com notificações de diversos producers

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages