Worker
Este documento describe la lógica y los procesos implementados en el Worker de Reabastecimiento de Datos.
Visión General
Section titled “Visión General”El Worker de Reabastecimiento de Datos es responsable de procesar eventos de reabastecimiento y reposición desde una cola SQS, enriquecerlos con datos adicionales y publicarlos en temas SNS para su consumo por sistemas de procesamiento de datos. El worker se ejecuta según una programación definida por una expresión cron y procesa mensajes en lotes.
Procesos y Manejadores
Section titled “Procesos y Manejadores”Proceso Principal del Worker
Section titled “Proceso Principal del Worker”Nombre: RestockingDataEventWorker
Descripción: El proceso principal del worker que coordina la recuperación y el procesamiento de eventos desde la cola SQS.
Entrada/Salida:
- Entrada: Mensajes SQS que contienen datos de eventos
- Salida: Eventos procesados publicados en temas SNS
Flujo de Procesamiento:
- El worker es activado por un trabajo cron en intervalos programados
- Recupera hasta 10 mensajes de la cola SQS
- Para cada mensaje:
- Determina el tipo de evento
- Enruta el evento al procesador apropiado
- Maneja casos de éxito y error
- Elimina el mensaje de la cola si se procesa con éxito o si encuentra un error no recuperable
- Registra estadísticas de procesamiento (total de eventos, conteo de éxitos, conteo de fallos, tiempo de procesamiento)
Adaptadores/Puertos Involucrados:
- QueueService: Para recuperar y eliminar mensajes
- RestockingDataEventProcessor: Para procesar eventos de reabastecimiento
- RestockDataEventProcessor: Para procesar eventos de reposición
Reglas de Negocio:
- Los mensajes con tipos de eventos no procesables se registran y eliminan de la cola
- Ciertos errores de negocio (por ejemplo, WarehouseNotEnabledError, ProductNotFoundError) se consideran no recuperables y resultan en la eliminación del mensaje
- Otros errores se consideran recuperables y el mensaje permanece en la cola para procesamiento futuro
Posibles Errores/Excepciones:
- UnprocessableEventTypeError: Cuando el tipo de evento no es reconocido
- InvalidEventFormatError: Cuando el formato del evento es inválido
- WarehouseNotEnabledError: Cuando el almacén no está habilitado para procesamiento
- ProductNotFoundError: Cuando no se encuentra el producto
- LocationNotFoundError: Cuando no se encuentra la ubicación
- ContainerNotFoundError: Cuando no se encuentra el contenedor
- UnexpectedError: Para errores inesperados durante el procesamiento
Procesamiento de Eventos de Reabastecimiento
Section titled “Procesamiento de Eventos de Reabastecimiento”Nombre: RestockingDataEventProcessor
Descripción: Procesa eventos de reabastecimiento (RestockingCreated, RestockingUpdated, RestockingCompleted) enriqueciéndolos con información de producto y demanda y publicándolos en un tema SNS.
Entrada/Salida:
- Entrada:
interface RestockingEventData { type: 'RestockingCreated' | 'RestockingUpdated' | 'RestockingCompleted' data: { restockingId: string productEan: string quantity: number status: string createdAt: string updatedAt: string } context: { warehouse: string country: string }}- Salida:
interface RestockingEvent { id: string type: 'RestockingCreated' | 'RestockingUpdated' | 'RestockingCompleted' timestamp: string data: { restockingId: string productEan: string productName: string quantity: number demand: { forecastQuantity: number minimumStock: number maximumStock: number } warehouse: string country: string status: string createdAt: string updatedAt: string }}Flujo de Procesamiento:
- Validar el formato de datos del evento
- Verificar si el almacén está habilitado para procesamiento
- Obtener información del producto desde el Servicio de Productos
- Obtener información de demanda desde el Servicio de Demanda
- Transformar los datos a un formato estandarizado de RestockingEvent
- Publicar el evento en el tema SNS de Datos de Reabastecimiento
Adaptadores/Puertos Involucrados:
- ProductService: Para recuperar información de productos
- DemandService: Para recuperar información de demanda
- RestockingEventDispatcher: Para publicar eventos en SNS
Reglas de Negocio:
- El evento debe tener un formato válido
- El almacén debe estar habilitado para procesamiento
- El producto debe existir
- La información de demanda debe estar disponible
Posibles Errores/Excepciones:
- InvalidEventFormatError: Cuando el formato del evento es inválido
- WarehouseNotEnabledError: Cuando el almacén no está habilitado para procesamiento
- ProductNotFoundError: Cuando no se encuentra el producto
- UnexpectedError: Para errores inesperados durante el procesamiento
Procesamiento de Eventos de Reposición
Section titled “Procesamiento de Eventos de Reposición”Nombre: RestockDataEventProcessor
Descripción: Procesa eventos de reposición (RestockRegistered) enriqueciéndolos con información de producto, demanda, ubicación y contenedor y publicándolos en un tema SNS.
Entrada/Salida:
- Entrada:
interface RestockEventData { type: 'RestockRegistered' data: { restockId: string productEan: string quantity: number locationId: string containerId: string createdAt: string } context: { warehouse: string country: string }}- Salida:
interface RestockEvent { id: string type: 'RestockRegistered' timestamp: string data: { restockId: string productEan: string productName: string quantity: number demand: { forecastQuantity: number minimumStock: number maximumStock: number } location: { id: string name: string type: string } container: { id: string name: string type: string } warehouse: string country: string createdAt: string }}Flujo de Procesamiento:
- Validar el formato de datos del evento
- Verificar si el almacén está habilitado para procesamiento
- Obtener información del producto desde el Servicio de Productos
- Obtener información de demanda desde el Servicio de Demanda
- Obtener información de ubicación desde el Servicio de Ubicaciones
- Obtener información de contenedor desde el Servicio de Contenedores
- Transformar los datos a un formato estandarizado de RestockEvent
- Publicar el evento en el tema SNS de Datos de Reposición
Adaptadores/Puertos Involucrados:
- ProductService: Para recuperar información de productos
- DemandService: Para recuperar información de demanda
- LocationService: Para recuperar información de ubicaciones
- ContainerService: Para recuperar información de contenedores
- RestockEventDispatcher: Para publicar eventos en SNS
Reglas de Negocio:
- El evento debe tener un formato válido
- El almacén debe estar habilitado para procesamiento
- El producto debe existir
- La información de demanda debe estar disponible
- La ubicación debe existir
- El contenedor debe existir
Posibles Errores/Excepciones:
- InvalidEventFormatError: Cuando el formato del evento es inválido
- WarehouseNotEnabledError: Cuando el almacén no está habilitado para procesamiento
- ProductNotFoundError: Cuando no se encuentra el producto
- LocationNotFoundError: Cuando no se encuentra la ubicación
- ContainerNotFoundError: Cuando no se encuentra el contenedor
- UnexpectedError: Para errores inesperados durante el procesamiento