Skip to content

Worker

El Worker de Sugerencias de Reabastecimiento es responsable de procesar eventos de transacciones de inventario y actualizar sugerencias de reabastecimiento basadas en esos eventos. Sigue un flujo de proceso bien definido para asegurar actualizaciones fiables y consistentes.

Descripción: El componente principal del worker que coordina el procesamiento de mensajes de transacciones de inventario desde la cola.

Estructura del Mensaje de Entrada:

interface InventoryTransactionMessage {
type: string;
data: {
entryId: string;
transactionId: string;
productId: string;
productEan: string;
locationId: string;
locationType: LocationType;
containerId?: string;
stock: number;
description: string;
transactionQuantity: number;
timestamp: string;
};
context: {
country: string;
warehouse: string;
};
}

Salida: Entidad Restocking actualizada con sugerencias renovadas.

  1. Recepción de Mensajes:

    • El worker sondea la cola SQS en busca de mensajes
    • Los mensajes se reciben en lotes (hasta 10 a la vez)
    • Cada mensaje contiene un evento de transacción de inventario
  2. Procesamiento de Mensajes:

    • Para cada mensaje, el worker:
      • Extrae los datos del evento
      • Los pasa al RestockingSuggestionProcessor
  3. Validación de Eventos:

    • El procesador verifica si el tipo de evento es procesable
    • Valida el formato del evento usando el EventValidator
  4. Recuperación de Reabastecimiento:

    • Recupera el registro de reabastecimiento activo basado en:
      • EAN del producto
      • Almacén
      • País
  5. Verificación de Mutabilidad:

    • Verifica que el registro de reabastecimiento pueda ser actualizado
    • Comprueba el estado y otras condiciones
  6. Actualización de Sugerencias:

    • Llama al RestockingService para actualizar sugerencias
    • El servicio se comunica con la API del Gestor de Reabastecimiento
  7. Finalización de Mensajes:

    • En caso de procesamiento exitoso, el mensaje se elimina de la cola
    • En ciertos errores de negocio (por ejemplo, reabastecimiento no encontrado), el mensaje también se elimina
    • En errores inesperados, el mensaje permanece en la cola para reintento
  8. Registro de Métricas:

    • El worker registra métricas de procesamiento:
      • Total de eventos procesados
      • Conteo de éxitos
      • Conteo de fallos
      • Tiempo de procesamiento
  • Puerto QueueService: Interfaz para operaciones de cola

    • Adaptador AwsQueueService: Implementa operaciones de cola usando AWS SQS
  • Puerto RestockingService: Interfaz para operaciones de reabastecimiento

    • Adaptador HttpRestockingService: Implementa operaciones de reabastecimiento usando llamadas HTTP a la API del Gestor de Reabastecimiento
  • Puerto Processor: Interfaz para procesar eventos

    • Adaptador RestockingSuggestionProcessor: Implementa la lógica de procesamiento para eventos de transacciones de inventario
  1. Validación de Tipo de Evento:

    • Solo se procesan tipos de eventos específicos
    • Otros son rechazados con EventTypeUnprocessableError
  2. Mutabilidad de Reabastecimiento:

    • Los registros de reabastecimiento deben estar en un estado mutable para ser actualizados
    • Los registros inmutables se omiten con RestockingImmutableError
  3. Jerarquía de Manejo de Errores:

    • Los errores de negocio (específicos del dominio) se manejan de manera diferente a los errores inesperados
    • Algunos errores de negocio permiten la eliminación de mensajes, otros no
  1. EventTypeUnprocessableError:

    • Causa: El tipo de evento no es compatible para procesamiento
    • Manejo: Registrar advertencia, eliminar mensaje de la cola
  2. InvalidEventFormatError:

    • Causa: El formato del mensaje de evento es inválido
    • Manejo: Registrar error, eliminar mensaje de la cola
  3. RestockingNotFoundError:

    • Causa: No se encontró registro de reabastecimiento activo para los parámetros dados
    • Manejo: Registrar advertencia, eliminar mensaje de la cola
  4. RestockingImmutableError:

    • Causa: El registro de reabastecimiento no puede ser actualizado (por ejemplo, estado incorrecto)
    • Manejo: Registrar advertencia, eliminar mensaje de la cola
  5. RestockingServiceError:

    • Causa: Error al comunicarse con la API del Gestor de Reabastecimiento
    • Manejo: Registrar error, dejar mensaje en la cola para reintento
  6. UnexpectedError:

    • Causa: Cualquier error inesperado durante el procesamiento
    • Manejo: Registrar error, dejar mensaje en la cola para reintento