Skip to Content
Primeros pasosCiclo de vida del mensaje

Ciclo de vida del mensaje

Estados posibles

EstadoSignificado
NAO_PROCESSADARecibida y persistida, todavía no encolada
ENFILEIRADAJob creado en BullMQ, esperando worker
PROCESSANDOWorker ejecutando la entrega en este momento
PROCESSADAEntregada con éxito
AGUARDANDO_REENVIOFalló y está en el intervalo de backoff antes del próximo intento
ERRO_ENTREGAFalla técnica tras agotar los reintentos (timeout, conexión, HTTP 5xx)
ERRO_NEGOCIOEl destino respondió, pero la respuesta coincidió con una regla de error de negocio
ERRO_COLETAFalla al buscar el dato en la fuente externa (etapa 1 de una Recolección)
CANCELADADescartada manualmente desde la pantalla de cancelación

Estos valores son identificadores literales de la API, no etiquetas de pantalla. Son cadenas en portugués del contrato y nunca se traducen — úsalos tal cual al filtrar (GET /mensagens?status=ERRO_ENTREGA) o al leer el cuerpo de una respuesta. La interfaz muestra una etiqueta traducida para cada uno, pero el valor almacenado y transportado no cambia con el idioma.

ERRO_COLETA y ERRO_ENTREGA son cosas distintas en una Recolección: el primero es una falla al leer el origen; el segundo, una falla al reenviar al destino un dato que ya fue leído con éxito.

Error técnico × error de negocio

  • Error técnico — el destino no respondió, se agotó el timeout o devolvió un error de transporte. El CMS reintenta según los intentos y el backoff de la Definición.
  • Error de negocio — el destino respondió normalmente (incluso HTTP 200), pero el contenido de la respuesta coincide con un patrón registrado en Errores de Negocio. Reintentar no sirve: alguien tiene que corregir el dato. Opcionalmente la regla bloquea la Interfaz, reteniendo los próximos mensajes hasta que haya intervención.

Dónde ocurren los intentos

El Máximo de intentos de la Definición vale en los dos modos de entrega, pero en lugares distintos:

ModoDónde repiteIntervalo entre intentos
AsíncronaEn el job de la cola, fuera de la solicitud de recepción10 segundos
SíncronaDentro de la propia solicitud de recepción1 segundo

El intervalo corto del modo síncrono es intencional: ahí quien envió el mensaje está esperando la respuesta, y cada vuelta de más es latencia sumada. Sirve para atravesar una falla momentánea — una conexión rechazada, el 502 de un proxy reiniciando — y no para aguardar que un destino vuelva desde cero. Ese es el caso de uso de la entrega asíncrona.

En cualquiera de los modos, el bucle se detiene antes de agotar los intentos cuando:

  • la entrega funciona;
  • el destino devuelve un error de negocio — repetir devolvería exactamente el mismo error;
  • la Aplicación de destino está offline en el keep-alive — ni el primer intento sale.

Cada intento graba su propio registro de procesamiento: ese historial es el que muestra el detalle del mensaje.

Reproceso

Los mensajes en ERRO_ENTREGA o ERRO_NEGOCIO pueden reenviarse desde la pantalla Errores de Entrega (/messages/delivery-errors), individualmente o en lote. El reproceso crea un nuevo intento registrado en el historial del mensaje — nada se sobrescribe.

Retención

El job de limpieza (módulo limpeza, configurable en Programadores) corre cada madrugada y purga mensajes antiguos según los días de retención definidos en cada Interfaz — la retención es por Interfaz, no global. El informe de Almacenamiento muestra el volumen acumulado por Aplicación → Interfaz → Definición, con la retención de cada una al lado.