STREAMING_ENABLED=true. Reporter no publica estos hechos en Kafka. Cuando el streaming está desactivado, manager y worker usan un emisor no-op y no inician un dispatcher de outbox.
Envelope y enrutamiento
Todos los eventos usance-source reporter, ce-schemaversion 1.0.0 y un ce-type calificado por fuente con la forma studio.lerian.reporter.<resource>.<event>. El payload es JSON con claves en snake_case.
Consulta el envelope compartido para el contrato completo de headers de CloudEvents.
Semántica de entrega
Reporter emite después de confirmar el cambio de estado de negocio. Los errores de publicación no hacen fallar la operación subyacente.- Importante: publicación directa, con fallback a un outbox duradero cuando el circuito del broker está abierto.
- Crítica: Reporter omite la publicación directa. Siempre persiste el evento en el outbox duradero para su despacho y reintento.
- Ambas políticas solicitan
on_routable_failure, pero las rutas actuales de RabbitMQ no definen un destino DLQ explícito. El publicador ve un fallo enrutable. Ninguna copia llega a una ruta dead-letter. - La entrega del broker es al menos una vez. Los consumidores deben ser idempotentes y deduplicar con
(ce-source, ce-id).
Catálogo de eventos emitidos
Tanto manager como worker emiten
report.errored. Todas las variantes usan el ce-id determinista reporter.report.error.<report_id>. Por eso, un consumidor que deduplica según (ce-source, ce-id) conserva solo el primer report.errored recibido para un report_id. Las transiciones críticas de plazo usan reporter.deadline.<event_type>.<deadline_id>.<timestamp>.
Contratos data completos
Estas declaraciones al estilo TypeScript reflejan la forma del JSON en el wire. ? indica que la propiedad es opcional. | null indica que la propiedad está presente pero puede ser null en JSON. Los timestamps son strings RFC 3339.
Riel interno de comandos separado
Manager envía a worker un comando JSON que no es CloudEvents por RabbitMQ. UsaRABBITMQ_EXCHANGE, RABBITMQ_GENERATE_REPORT_KEY y RABBITMQ_GENERATE_REPORT_QUEUE, con entrega persistente. Este comando no forma parte del catálogo público de eventos.
Estado de eventos entrantes
Reporter no consume ningún hecho público delib-streaming. Su suscriptor de Hub permanece no disponible: habilitarlo se rechaza al iniciar hasta que exista un contrato de worker downstream compatible.
