lib-streaming. Cada evento viaja en el envelope compartido: ce-type nombra el evento como studio.lerian.matcher.<resource>.<event>, ce-subject transporta el id del agregado, ce-tenantid el tenant propietario, y ce-schemaversion la versión del payload. La versión es 1.0.0 para todos los eventos a continuación.
ce-source proviene de STREAMING_CLOUDEVENTS_SOURCE, que todo despliegue con streaming habilitado debe configurar. Los despliegues usan matcher. Con ese valor, cada evento usa el tema de aplicación lerian.streaming.matcher y los tipos calificados por fuente que se muestran abajo. Una fuente configurada distinta cambia ambos. El tipo de recurso, el tipo de evento y la versión del esquema permanecen en los headers de CloudEvents. Los montos monetarios (valores de comisión y montos de ajuste) cruzan el wire como strings decimales, nunca floats. Matcher expone su catálogo completo de eventos en GET /system/matcher/streaming/manifest.
Esta página cubre el plano de streaming de Kafka. El despacho de webhook de excepciones de Matcher (callbacks HTTP para el enrutamiento de excepciones) es una superficie separada, documentada en Webhooks y callbacks.
Políticas de entrega
El catálogo de Matcher usa dos políticas de entrega: 16 CRITICAL definiciones usan la política respaldada por outbox y 30 IMPORTANT definiciones usan entrega directa con fallback de circuito abierto.- Los eventos respaldados por outbox van al outbox en la misma transacción de base de datos que el cambio de estado. Un relay publica las filas confirmadas y reintenta durante las interrupciones del broker. Estos son los hechos de grado de auditoría (resultados de coincidencia, resoluciones de excepciones, disputas, gobernanza). Un despliegue no puede debilitar esta política.
- Los eventos directos se publican después de que la transacción hace commit, en modo best-effort, y recurren al outbox solo cuando el circuito del broker está abierto. Estas son señales de configuración y de ciclo de vida operativo.
Eventos de coincidencia
Respaldados por outbox:transaction.matched, transaction.pending_review. Directos: el resto.
Eventos de excepciones y disputas
Respaldados por outbox, exceptoexception.assigned y los eventos de comentarios, que son directos.
Eventos de configuración e ingesta de datos
Todos directos.Eventos de gobernanza e informes
Respaldados por outbox, excepto la familia export-job, que es directa.Contratos de payload
Estos tipos reflejan los objetosdata de CloudEvent emitidos en matcher@e3902325. ? significa que la propiedad puede estar ausente. Las marcas de tiempo son UTC RFC 3339 con precisión de nanosegundos. Los alias de UUID documentan la identidad semántica. Un campo tipado como string no lleva ninguna garantía de UUID. stats es un mapa entero abierto, así que los consumidores deben tolerar claves nuevas.
ingestion.completed incluye el rango de fechas solo cuando el pipeline calculó uno. Las marcas de tiempo terminales y los códigos de error estables dependen del agregado persistido. Los contadores de exportación están ausentes mientras sean cero. dispute.won y dispute.lost no repiten el category enviado por dispute.opened.
Declarados pero aún no emitidos
El catálogo y el manifest declaran 46 definiciones, pero el código de producción emite 39. Estas siete definiciones no tienen ningún invocador fuera de las pruebas:
No construyas consumidores que dependan de recibir estas definiciones hasta que Matcher agregue y conecte emisores de producción.
Eventos consumidos
Matcher no consume eventos de streaming de Kafka. Sus entradas de integración llegan por HTTP: subidas de archivos, extracciones de Discovery y, cuando está habilitado, entregas de webhook de Streaming Hub. Esas entregas llegan aPOST /v1/discovery/hub/events (firmadas con HMAC, deduplicadas por id de evento, deshabilitadas de forma predeterminada).
