Skip to content

Events

Este documento detalla las colas y eventos utilizados en el worker de recolección de logística inversa.

El worker de recolección de logística inversa utiliza AWS Simple Queue Service (SQS) para implementar un sistema basado en mensajes. El worker consume mensajes de una cola SQS, los procesa y crea elementos de logística inversa basados en el contenido del mensaje.

Nombre: collector-queue

ARN en Producción:

arn:aws:sqs:us-east-1:ACCOUNT_ID:collector-queue

ARN en Staging:

arn:aws:sqs:us-east-2:ACCOUNT_ID:collector-queue

Propósito: Recibir notificaciones sobre suministros obsoletos que necesitan ser procesados para logística inversa.

Consumidores:

  • CollectorWorker a través de AwsQueueService

Formato del mensaje:

export interface SupplyEventMessage {
type: 'SupplyDeprecated'
data: {
_id: string
orderId: string
barcode: string
items: Array<{
ean: string
quantity: number
zone: string
}>
samplings: Array<{
ean: string
quantity: number
zone: string
}>
}
context: {
country: string
warehouse: string
}
}

El manejo de errores y reintentos se implementa de la siguiente manera:

  1. Tiempo de Visibilidad del Mensaje:

    • Los mensajes tienen un tiempo de visibilidad de 30 segundos, durante los cuales no son visibles para otros consumidores.
    • Si el procesamiento falla, el mensaje se vuelve visible nuevamente después del tiempo de espera.
  2. Clasificación de Errores:

    • Algunos errores se consideran no críticos (por ejemplo, EventTypeUnprocessableError, WarehouseNotEnabledError, ReverseLogisticsItemAlreadyExistsError) y el mensaje se elimina de la cola.
    • Otros errores se consideran críticos y el mensaje no se elimina, permitiendo que sea reintentado más tarde.
  3. Logging:

    • Todos los errores se registran con el contexto apropiado para solución de problemas.
    • Ejemplo en worker.ts:
      logger.error({
      event: CollectorWorker.name,
      data: { processingTime },
      err,
      msg: `Error processing events!`,
      })