Skip to content

Events

Este documento proporciona una visión general de las colas SQS y los eventos SNS utilizados en el Data Inventory Worker.

El Data Inventory Worker utiliza AWS SQS (Simple Queue Service) para recibir mensajes de eventos de inventario y AWS SNS (Simple Notification Service) para publicar eventos de transacciones de inventario procesados. Esta arquitectura orientada a eventos permite el desacoplamiento de servicios y el procesamiento asíncrono de datos de inventario.

URL de la Cola: Configurada a través de la variable de entorno

QUEUE_DATA_INVENTORY_URL

Propósito: Recibe mensajes de eventos de inventario del sistema Inventory Manager

Formato del Mensaje:

type TransactionEventMessage = EventMessage<
'InputTransaction' | 'OutputTransaction',
{
/* Entry */
entryId: string;
stock: number;
/* Product */
productId: string;
productEan: string;
productSku: string;
expirationDate?: string;
lot?: string;
/* Location */
locationId: string;
locationName: string;
locationType: LocationType;
locationZone?: Zone;
/* Container */
containerId?: string;
containerName?: string;
/* Transaction */
transactionId: string;
description: string;
transactionQuantity: number;
timestamp: string;
}
>;
interface EventMessage<T, D> {
type: T;
data: D;
context: {
country: string;
warehouse: string;
};
}

Procesamiento: Los mensajes son recibidos por el AwsQueueService, procesados por el InventoryProcessor, y luego eliminados de la cola si el procesamiento es exitoso o si se cumplen ciertas condiciones de error

Evento de Transacción de Inventario de Datos

Section titled “Evento de Transacción de Inventario de Datos”

Evento: Evento de Transacción de Inventario

ARN de Producción:

TOPIC_ARN_INVENTORY_TRANSACTION

ARN de Staging:

TOPIC_ARN_INVENTORY_TRANSACTION

Propósito: Publica eventos de transacciones de inventario procesados a los suscriptores para análisis de datos

Formato del Mensaje:

export interface DataEvent {
PRODUCT_ID: string
EAN?: string
EVENT_DATETIME: string
COUNTRY: string
WAREHOUSE_ID: string
WAREHOUSE_CODE: string
QUANTITY: number
CURRENT_INVENTORY: number
LOCATION: string
LOCATION_TYPE: string
LOCATION_ZONE?: string
CONTAINER?: string
EXPIRATION_DATE?: string
LOT_NUMBER?: string
MOVEMENT_TYPE: 'ENTRADA' | 'SALIDA'
ENTRY_ID: string
TRANSACTION_ID: string
}
  1. El worker recibe mensajes de la cola SQS de Inventario de Datos
  2. Procesa los mensajes, validándolos y transformándolos al formato esperado por los servicios de datos
  3. Publica los eventos procesados en el tema SNS de Transacción de Inventario de Datos
  4. Los suscriptores del tema reciben los eventos y los procesan para análisis de datos

Esta arquitectura orientada a eventos permite el desacoplamiento de servicios y el procesamiento asíncrono de datos de inventario, haciendo que el sistema sea más escalable y resiliente.