Events
Este documento proporciona información sobre las colas SQS y los eventos SNS utilizados en el Worker de Reabastecimiento de Datos.
Visión General
Section titled “Visión General”El Worker de Reabastecimiento de Datos utiliza AWS Simple Queue Service (SQS) para recibir mensajes que contienen eventos de reabastecimiento y AWS Simple Notification Service (SNS) para publicar eventos procesados a los consumidores. Esta arquitectura sigue el patrón publicador-suscriptor, permitiendo un procesamiento de eventos desacoplado y escalable.
Cola de Datos de Reabastecimiento
Section titled “Cola de Datos de Reabastecimiento”URL de la Cola: Configurada mediante la variable de entorno
QUEUE_URL_RESTOCKING_DATAPropósito: Recibe eventos de reabastecimiento y reposición para su procesamiento
Tiempo de Visibilidad: Configurado mediante la variable de entorno SQS_VISIBILITY_TIMEOUT (predeterminado: 60 segundos)
Formato del Mensaje: Mensajes JSON que contienen datos de eventos con la siguiente estructura:
export interface Restocking { restockingId: string productId?: string productEan: string productSku: string productName?: string | null type: RestockingType level: RestockingLevel status: RestockingStatus}
export interface RestockingEventData extends EventMessage< 'RestockingCreated' | 'RestockingUpdated' | 'RestockingCompleted', Restocking > {}
export interface Restock { id: string ean: string target: string source: string quantity: number user: string timestamp: ZonedDateTime alertId?: string level?: string zone?: Zone}
export interface RestockEventData extends EventMessage<'RestockRegistered', Restock> {}
interface EventMessage<T, D> { type: T data: D context: { country: string warehouse: string }}Procesamiento: Los mensajes se reciben en lotes (hasta 10 mensajes por lote) y se procesan secuencialmente
Política de Eliminación: Los mensajes se eliminan de la cola después de un procesamiento exitoso o cuando encuentran ciertos errores no recuperables
Evento de Datos de Reabastecimiento
Section titled “Evento de Datos de Reabastecimiento”Evento: Datos de reabastecimiento procesados
ARN de Producción:
arn:aws:sns:us-east-1:849786826922:wms-lake-restock_alert-topicARN de Staging:
arn:aws:sns:us-east-2:529305108461:wms-lake-restock_alert-topicPropósito: Publica eventos de reabastecimiento enriquecidos a los consumidores de datos
Formato del Mensaje:
export interface RestockingEvent { ALERT_ID: string // ID único del evento de alerta PRODUCT_ID: string // SKU del producto EAN: string // EAN del producto EVENT_DATETIME: string // Fecha y hora del evento COUNTRY: string // Código de país de dos letras WAREHOUSE_ID: string // ID del almacén SUGGESTED_QUANTITY: number // Cantidad de demanda sugerida ALERT_TYPE: string // Tipo de alerta (por ejemplo, "Warning", "Critical", "Urgent") ALERT_STATUS: string // Estado de la alerta (por ejemplo, "Pending", "In Progress", "Completed", "Cancelled")}Evento de Datos de Reposición
Section titled “Evento de Datos de Reposición”Evento: Datos de reposición procesados
ARN de Producción:
arn:aws:sns:us-east-1:849786826922:wms-lake-restocked_product-topicARN de Staging:
arn:aws:sns:us-east-2:529305108461:wms-lake-restocked_product-topicPropósito: Publica eventos de reposición enriquecidos a los consumidores de datos
Formato del Mensaje:
export interface RestockEvent { PRODUCT_ID: string // SKU del producto EAN: string // EAN del producto EVENT_DATETIME: string // Fecha y hora del evento RESTOCKED_QUANTITY: number // Cantidad reabastecida SOURCE_LOCATION: string // Ubicación de origen del restock TARGET_LOCATION: string // Ubicación de destino del restock CONTAINER_LPN?: string // LPN del contenedor, opcional COUNTRY: string // Código de país de dos letras WAREHOUSE_ID: string // ID del almacén USER_EMAIL: string // Correo electrónico del usuario que realizó la acción}Flujo de Mensajes
Section titled “Flujo de Mensajes”- Los sistemas externos publican eventos de reabastecimiento y reposición en la cola SQS
- El Worker de Reabastecimiento de Datos consulta la cola para obtener mensajes
- Para cada mensaje, el worker:
- Valida el formato del evento
- Verifica si el almacén está habilitado para el procesamiento
- Enriquece el evento con información de producto y demanda
- Transforma el evento al formato estandarizado
- Publica el evento procesado en el tema SNS apropiado
- Elimina el mensaje de la cola
- Los suscriptores a los temas SNS reciben los eventos procesados y realizan su propio procesamiento