Skip to content

sebasilvac/rabbitmq-nestjs

Repository files navigation

RabbitmqNestjs

Introducción

Este es un proyecto de ejemplo que demuestra la implementación de comunicación entre microservicios utilizando RabbitMQ y NestJS. El objetivo es mostrar cómo diferentes servicios pueden interactuar de manera eficiente y desacoplada mediante colas de mensajes, facilitando la escalabilidad y la resiliencia en arquitecturas distribuidas.

Instrucciones para correr el proyecto

  1. Clona el repositorio:

    git clone <URL_DEL_REPOSITORIO>
    cd rabbitmq-nestjs
  2. Instala las dependencias:

    npm install
  3. Configura las variables de entorno:

    • Copia y ajusta los archivos .env.development o .env.production según el archivo .env.example.
  4. Levanta los servicios de RabbitMQ:

    docker-compose up -d
  5. Inicia los microservicios: Puedes iniciar cada microservicio individualmente, por ejemplo:

    npx nx serve api-gateway
    npx nx serve orders
    npx nx serve payments
    npx nx serve notifications

    O bien, puedes abrir varias terminales y ejecutar cada comando por separado.

    Tambien puedes ejecutar todos los servicios al mismo tiempo con el siguiente comando

    nx run-many -t serve --all

Comunicación entre microservicios

La arquitectura de este proyecto está basada en microservicios que se comunican a través de RabbitMQ usando el patrón de colas de mensajes. Cada microservicio publica y consume mensajes según su responsabilidad:

  • api-gateway: Recibe las solicitudes externas y las distribuye a los microservicios correspondientes mediante mensajes en RabbitMQ.
  • orders, payments, notifications: Cada uno de estos servicios escucha mensajes en sus respectivas colas y responde o ejecuta acciones según el mensaje recibido. Por ejemplo, el servicio de órdenes puede emitir un evento cuando se crea una orden, el de pagos procesa pagos y el de notificaciones envía mensajes al usuario.

Esta comunicación asíncrona permite que los servicios sean independientes, tolerantes a fallos y fácilmente escalables.


Proyecto de ejemplo para la implementación de microservicios con NestJS y RabbitMQ.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors