Skip to content

Getting Started

El Container Killer Worker es un servicio automatizado diseñado para eliminar contenedores vacíos que ya no están en uso en el sistema de inventario. Su función principal es monitorear las transacciones de salida de inventario, identificar contenedores que han quedado sin productos (stock cero) y eliminarlos del sistema, optimizando así los recursos y manteniendo limpio el inventario.

  • Node.js: Entorno de ejecución para JavaScript
  • TypeScript: Lenguaje de programación tipado que compila a JavaScript
  • Express: Framework para aplicaciones web
  • cron: Para la programación de tareas periódicas
  • @aws-sdk/client-sqs: Cliente para interactuar con Amazon SQS
  • axios y axios-retry: Para realizar peticiones HTTP con capacidad de reintentos
  • zod: Para validación de esquemas
  • @justomx/either: Implementación del patrón Either para manejo de errores
  • @justomx/logger: Biblioteca de logging
  • @justomx/http-client: Cliente HTTP personalizado

El worker interactúa con los siguientes servicios externos:

  1. Servicio de Contenedores: Servicio HTTP que proporciona información sobre contenedores y permite su eliminación

    • Implementado en src/infrastructure/services/container/index.ts
    • Proporciona métodos para obtener información de contenedores y eliminarlos
  2. Servicio de Inventario: Servicio HTTP que proporciona información sobre el inventario

    • Implementado en src/infrastructure/services/inventory/index.ts
    • Proporciona métodos para contar los productos en un contenedor
  3. Amazon SQS: Servicio de colas para recibir mensajes de transacciones de salida

    • Implementado en src/infrastructure/services/queue/index.ts
    • Recibe y procesa mensajes de tipo OutputTransactionEvent

El Container Killer Worker se integra con el ecosistema de microservicios de la siguiente manera:

  • Recibe eventos de transacciones de salida desde el servicio de gestión de inventario a través de un tema SNS
  • Interactúa con el servicio de contenedores para obtener información y eliminar contenedores
  • Consulta el servicio de inventario para verificar si un contenedor está vacío

El punto de entrada del worker se encuentra en src/index.ts. Este archivo:

  1. Inicializa el logger para el seguimiento de la aplicación
  2. Configura y arranca un trabajo cron según la expresión definida en la configuración
  3. En cada ejecución del cron, obtiene una instancia del worker y ejecuta su método run()
  4. Mantiene un estado de salud del cron para monitoreo
  5. Importa ./bin/www que configura un servidor Express para endpoints de salud y monitoreo

El worker está diseñado para ejecutarse periódicamente según la configuración del cron, procesando lotes de mensajes de la cola SQS en cada ejecución.