Skip to main content
Reporter publica un evento de negocio cada vez que una plantilla, un informe o un plazo cambia de estado. Si te suscribes a esos eventos, te enteras de que un informe terminó sin sondear GET /v1/reports/{id} para averiguarlo. GET /v1/streaming/events describe el contrato en forma legible por máquina. Esta página cubre el lado del consumidor: qué te dice el manifiesto, qué llega por el cable y qué lleva cada evento.

La operación de manifiesto


Obtener eventos de streaming devuelve el catálogo estático de eventos. Está autenticada como cualquier otra operación, responde Cache-Control: no-store y se sirve tanto si este despliegue publica eventos como si no. Léela al arrancar para comprobar que tu consumidor y Reporter coinciden en el contrato. La respuesta tiene cuatro campos:

El topic es una clave de enrutamiento


Cada entrada de evento lleva un topic. Es una clave lógica de enrutamiento: un identificador estable para un flujo de eventos, compuesto a partir del source del publicador y de la definición del evento. Con el source que Reporter anuncia, report.requested se compone así:
Esa cadena no es una dirección de broker. No enlaces una cola a ella ni la trates como un destino. Existe para que un consumidor pueda identificar un flujo de eventos a través de distintos transportes. Aquello a lo que sí te enlazas vive en la configuración del despliegue. Reporter publica en el exchange que nombra RABBITMQ_REPORT_EVENTS_EXCHANGE, y la clave de enrutamiento de cada mensaje es la clave de definición del evento tal cual — report.finished, deadline.delivery_reverted, guiones bajos incluidos.

El catálogo de eventos


Existen doce definiciones de evento repartidas entre los dos modos de ejecución. Este canal es solo de publicación. Reporter emite estos eventos y no consume ninguno.

Entrega


La clase de la tabla anterior selecciona una política de entrega. Un evento de clase Critical, por tanto, nunca publica directamente al broker. Aterriza en un outbox duradero dentro de la misma transacción, y un despachador lo reproduce después de una caída del broker. Nada se pierde por un reinicio del broker. La emisión ocurre después del commit y nunca hace fallar el trabajo. Un problema de publicación no convierte un informe almacenado en uno con error.
La entrega es al menos una vez. Deduplica por ce-id. Los eventos de informe se identifican por el identificador del informe y su estado terminal, con la forma reporter.report.<status>.<reportId>, así que cada reemisión del mismo hecho lleva el mismo identificador. Los eventos de plazo se identifican por el identificador del plazo, el tipo de evento y la marca de tiempo de la transición.

El sobre CloudEvents


Los mensajes viajan en modo binario de CloudEvents, versión 1.0. Los atributos de contexto viajan como cabeceras del mensaje. Los mensajes se marcan como persistentes. Un despliegue de tenant único también estampa un valor de tenant, así que un mismo consumidor atiende las dos formas de despliegue con el mismo código.

Qué lleva un payload


Las claves del payload son snake_case, a diferencia de la superficie REST en camelCase. Un cuerpo de report.finished:
artifact_object_key es la ruta del artefacto relativa al prefijo de almacenamiento de informes, con la forma <templateId>/<reportId>.<format>. Descargar un informe es la vía admitida para obtener el archivo, y sirve un informe en estado Finished. Despliegue muestra dónde queda ese prefijo dentro del bucket. report.partial añade section_failures y failed_section_count junto a los mismos campos de artefacto, para que un consumidor pueda encaminar un informe utilizable pero incompleto de forma distinta a uno limpio. report.errored sustituye los campos de artefacto por error_code y error_summary. Ambos vienen de un vocabulario fijo — report_generation_failed, report_generation_timeout o report_generation_canceled —, cada uno emparejado con un resumen fijo. El texto de error en bruto nunca viaja por el cable, así que un payload no puede filtrar una consulta, una cadena de conexión ni datos de tenant. Ramifica tu lógica según error_code.

Habilitar la publicación de eventos


La publicación de eventos es una decisión de despliegue, que se toma con STREAMING_ENABLED. Enciéndela y Reporter exige tres ajustes más al arrancar: Reporter se niega a arrancar cuando la publicación está encendida y cualquiera de los tres está en blanco, así que un despliegue mal configurado falla al arrancar en lugar de perder eventos en silencio.

Próximos pasos


API REST de Reporter

Las 23 operaciones, la autenticación, la paginación y los errores.

Referencia de API

La operación de manifiesto de streaming, con su formato de respuesta completo.

Variables de entorno

Cada ajuste detrás de las superficies de streaming, exchange y modo de ejecución.

¿Qué es Reporter?

Plantillas, informes, plazos y dónde encajan.